Kendo Grid外键列下拉值变更事件监听失效求助
Kendo Grid外键列下拉框值变更事件监听解决方案
你遇到的问题核心是:给外键列设置的id="colChanged"仅作用于初始渲染的静态元素,而Grid进入编辑模式时,下拉框是动态生成的,静态绑定的change事件无法捕获动态元素的事件。以下是两种可行解决方案:
方案1:使用事件委托(推荐)
通过Grid的父容器委托监听动态生成的下拉框事件,无需关心元素何时创建:
// 替换#yourGridId为你的Grid实际ID $("#yourGridId").on("change", "select[data-field='Colour']", function() { var selectedValue = $(this).val(); console.log("Selected value..: " + selectedValue); });
说明:Kendo会给编辑状态下的外键下拉框自动添加data-field属性,值对应绑定的字段名(这里是Colour),用这个属性定位能精准匹配目标下拉框,同时避免ID重复的问题。
方案2:利用Grid的edit事件绑定组件事件
通过Grid内置的edit事件,在进入编辑模式时直接获取下拉框组件并绑定事件:
$("#yourGridId").kendoGrid({ // 你的Grid其他配置项... edit: function(e) { // 获取外键列对应的下拉框组件 var dropdown = e.container.find("[data-field='Colour']").data("kendoDropDownList"); if (dropdown) { dropdown.bind("change", function() { var selectedValue = this.value(); console.log("Selected value..: " + selectedValue); }); } } });
说明:这是Kendo官方推荐的组件事件绑定方式,能直接获取下拉框的Kendo实例,还可以调用组件的其他方法(比如text()获取显示文本)。
内容的提问来源于stack exchange,提问作者melspring
相关产品推荐
相关产品推荐

