我有2个Kendo下拉菜单Status和SubStatus。 SubStatus将根据为Status选择的内容进行填充。我要添加功能,以防SubStatus数据源仅返回1个subStatus时,默认情况下应选择该子状态。无论SubStatus下拉列表中有多少subStatuse,当前功能都会选择一个空白。
我打算通过在change事件中添加一个名为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);


//未完成,需要在这里帮助。

    };


我如何计划实现此目标:
我将通过上述语句检查下拉列表的长度来实现此目的。如果长度= 1,那么我应该做一些事情:
$(“#appointmentSubStatus”)。data('kendoDropDownList')。value(1)。有什么更好的办法吗?

我的问题:
由于某种原因,len的值与更改前的值一样上升。因此,可以说,在页面加载中,下拉菜单中有1个子状态。当我更改状态时有6个子状态时,它将len的值显示为1。当我切换到只有2个子状态的状态时,它将显示len的值显示为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

关于javascript - 如何选择kendoDropDownList的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32277354/

10-09 10:10