0

我正在尝试将客户端事件添加到 Telerik 下拉列表,但这样做会使它成为静态的。静态我的意思是它不再像下拉列表一样,当我单击时它没有响应,因此无法查看/选择值。但是,只要我将下拉列表更改为组合框,它就可以正常工作。它让我可以单击并查看/选择值。

为什么会这样?为什么我可以将客户端事件添加到 Telerik 组合框,但不能添加到 Telerik 下拉列表?

这是我填充组合框的方式:

        <%= Html.Telerik().ComboBox().Name("ComboBox")
            .HtmlAttributes(new { @id = "ComboBox", @style = "width:104px;" })
            .ClientEvents(events =>
        {
            events.OnDataBinding("ComboBox_onDataBinding");
        })%>  

function ComboBox_onDataBinding(e) {
    var comboBox = $('#ComboBox').data('tComboBox');
                comboBox.dataBind([
                    { Text: "Product 1", Value: "1" },
                    { Text: "Product 2", Value: "2", Selected: true },
                    { Text: "Product 3", Value: "3" },
                    { Text: "Product 4", Value: "4" },
                    { Text: "Product 5", Value: "5" }
                ], true);
};

这是我填充下拉列表的方式:

        <%= Html.Telerik().DropDownList().Name("DropDownList")
            .HtmlAttributes(new { @id = "DropDownList", @style = "width:104px;" })
            .ClientEvents(events =>
        {
            events.OnDataBinding("DropDownList_onDataBinding");
        })%>  

function DropDownList_onDataBinding(e) {
    var dropDownList = $('#DropDownList').data('tDropDownList');
                dropDownList.dataBind([
                    { Text: "Product 1", Value: "1" },
                    { Text: "Product 2", Value: "2", Selected: true },
                    { Text: "Product 3", Value: "3" },
                    { Text: "Product 4", Value: "4" },
                    { Text: "Product 5", Value: "5" }
                ], true);
};

提前致谢。

4

2 回答 2

1

在您的情况下,当您不使用 Ajax 或 WebService 客户端数据绑定时,您不应配置 OnDataBinding 事件处理程序。您需要改为配置 OnLoad:

.ClientEvents(events => events.OnLoad("ddl_onLoad").OnChange("ddl_onChange")

处理程序:

function ddl_onLoad(e) {

    var ddl = $(this).data('tDropDownList');

    ddl.dataBind([
        { Text: 'Product 1', Value: '1' },
        { Text: 'Product 2', Value: '2', Selected: true },
        { Text: 'Product 3', Value: '3' },
        { Text: 'Product 4', Value: '4' }
    ], true);
}

function ddl_onChange(e) {

    //var ddl = $(this).data('tDropDownList');
    console.log(e.value);
}
于 2012-11-01T22:25:17.503 回答
0

您在处理程序.dataBind()内部调用OnDataBinding,这将再次触发OnDataBinding事件,一次又一次......

OnLoad考虑在事件或其他东西中进行客户端数据绑定

于 2012-10-30T18:43:20.427 回答