我有2个剑道下拉状态和SubStatus。根据为状态选择的内容填充SubStatus。我想添加功能,以防SubStatus数据源仅返回1个子状态时,默认情况下应选择该子状态。无论SubStatus下拉列表中有多少个子状态,当前功能都会选择一个空白。 我打算通过在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”)。数据( 'kendoDropDownList')。值(1)。有没有更好的方法?
我的问题: 出于某种原因, len 的价值与改变之前的价值相同。所以,让我们在pageload上说下拉列表中有1个子状态。当我更改有6个子状态的状态时,它会将 len的值显示为1.当我切换到只有2个子状态的状态时,它会显示 len的值为6.总是拿起以前的值。知道为什么会这样吗? 非常感谢你的帮助! :)
答案 0 :(得分:2)
您可以在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 强>