我如何 select kendoDropDownList 的长度

How do I select the length of a kendoDropDownList

我有 2 个 kendo 下拉状态和子状态。 SubStatus 根据为 Status 选择的内容进行填充。我想添加这样的功能,以防 SubStatus 数据源 returns 只有 1 个 subStatus,默认情况下应该选择该子状态。无论 SubStatus 下拉列表中有多少 subStatuses,当前功能都会选择一个空白。 我打算通过在更改事件中添加一个名为 setDefaultSubStatus 的函数来实现这一点。下面是代码:

var Status = $("#Status").kendoDropDownList({
        dataTextField: "DisplayValue",
        dataValueField: "Id",
        valuePrimitive: true,
        optionLabel: " ",
        autoBind: false,
        dataSource: intakeView.viewModel.StatusDataSource,
        change: function (e) {

            intakeView.viewModel.SubStatusesDataSource.read();
            setDefaultSubStatus();

        }

    });


function setDefaultSubStatus() {
        var dropDown = $("#appointmentSubStatus").data("kendoDropDownList");
        var len = dropDown.dataSource.data().length;
        alert(len);

//不完整,这里需要帮助。

    };

我打算如何实施: 我打算通过上面的语句检查下拉列表的长度来实现这一点。如果 length = 1 ,那么我应该做类似的事情: $("#appointmentSubStatus").data('kendoDropDownList').value(1)。有没有更好的办法?

我的问题: 由于某种原因,len 的值与更改前的值一样。因此,假设在页面加载时下拉列表中有 1 个子状态。当我更改有 6 个子状态的状态时,它会显示 len's 值为 1。当我切换到只有 2 个子状态的状态时,它会显示 len's value as 6. 总是拾取以前的值。知道为什么会这样吗? 非常感谢你的帮助! :)

您可以在 SubStatus 下拉列表中使用 dataBound 事件:http://docs.telerik.com/KENDO-UI/api/javascript/ui/dropdownlist#events-dataBound

当新数据源绑定到下拉列表时触发此事件。届时可以查看数据的长度,然后设置值。

dataBound: function(e) {
  if (e.sender.dataSource.data().length == 1){
    var val = e.sender.dataSource.data()[0].Id;
    e.sender.value(val);
  }
}

DEMO