javascript - 修改Kendo UI Dropdownlist的change事件

标签 javascript asp.net asp.net-mvc kendo-ui

我正在尝试更改 Kendo UI 下拉列表的“更改”事件,但不幸的是我没有任何运气。这是我到目前为止尝试过的代码:http://trykendoui.telerik.com/ukeV

具体来说,这是我的下拉列表初始值设定项:

var onChange = function(e)
{
    alert("something changed");
};
// create DropDownList from input HTML element
$("#dropdown").kendoDropDownList({
    dataTextField: "text",
    dataValueField: "value",
    dataSource: data,
    index: 0,
    change: onChange
});

这是我稍后尝试更改该功能的尝试:

onChange = function(e){alert("attempt 1");};
var dropDownData = $("#dropdown").data("kendoDropDownList");
dropDownData.options.change = function(e){alert("attempt 2");}
dropDownData.refresh();
具体来说,我首先尝试仅更改 onChange 函数,然后(当这不起作用时),我尝试直接更改 options.change 函数。虽然 options.change 函数确实发生了变化(当我在 chrome 调试器中检查它时),但下拉列表的实际功能保持不变。我想我需要刷新下拉列表或其他内容才能使我的编辑真正生效。有谁知道我如何才能真正让剑道网格刷新并显示我的数据?

最佳答案

我发现您已经找到了解决方法,但我想我应该添加更多解释。

为什么要这样改

onChange = function(e){alert("attempt 1");};

不起作用的是您将一个函数传递给小部件,并且小部件在适当的时间调用该函数。您没有传递对变量 onChange 的引用。因此更改变量不会影响小部件。

原因

dropDownData.options.change = function(e){alert("attempt 2");} 

不起作用的是 Kendo 将处理程序存储在自己的结构中(这是必要的,因为您可以为同一事件绑定(bind)多个处理程序!),因此它不会调用 options.change 在任何给定的时刻。

但是,有一个 setOptions 方法,使用它您可以使第二种方法起作用:

dropDownData.setOptions({
    change: function (e) {
        alert("attempt 2");
    }
});

关于javascript - 修改Kendo UI Dropdownlist的change事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089302/

相关文章:

JavaScript:原型(prototype)是静态的同义词吗?

javascript - 在 JavaScript 中创建动态全局变量并为其赋值

Javascript:从已经实例化的对象与原型(prototype)创建对象

asp.net - 重写规则错误 : HTTP Error 500. 50 - URL 重写模块错误。表达式 "https://abc.com/{R:1}"无法展开

c# - 附加信息 : The conversion of a varchar data type to a datetime data type resulted in an out-of-range value

c# - 在具有开放泛型类型的 Controller 上创建操作方法

javascript - 如何在view mvc razor asp.net中使用jquery真人?

css - 单选按钮看起来像按钮

javascript - nodeJS 中的持久变量

asp.net - upshot.js + 信号器 + knockout