尝试在页面加载时填充telerik ddl时出错

时间:2012-10-26 18:46:42

标签: javascript jquery asp.net-mvc telerik-mvc

如何在页面加载时填充telerik下拉列表?

当我尝试填充下拉列表时,我收到以下错误(在下面的重点行中):

Error: 'data(...)' is null or not an object

以下是我尝试填充telerik ddl的方法:

$(function(){
var values = [];
for (var i = 1; i < 10; i++) { 

values.push({ Text: i, Value: i });
}
****$("#MyDdl").data("tDropDownList").dataBind(values);****
});

也是这样尝试的:

 $(function(){
    onDataBinding();
    });

function onDataBinding(e) {
        var MyDdl = $('#MyDdl').data('tDropDownList');
        var values = [];
        for (var i = 1; i < 10; i++) {  
    values.push({ Text: i, Value: i });
    }
      ****MyDdl.dataBind(values);****
    };

但是在上面强调的行中得到以下未定义的错误:

Error: 'undefined' is null or not an object

注意: 添加按钮并在按钮单击事件上加载ddl会填充telerik下拉列表。 这样做非常合适:

    $(function(){
   var values = [];
        for (var i = 1; i < 10; i++) {             
        values.push({ Text: i, Value: i });
        }
        $("#MyDdl").data("tDropDownList").dataBind(values);            
    });

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您需要在DropDownList的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' }
    ]);
}

function ddl_onChange(e) {

    //var ddl = $(this).data('tDropDownList');
    console.log(e.value);
}

答案 1 :(得分:1)

不要直接调用onDataBinding()函数..将它链接到控件的客户端事件。

查看

   <%= Html.Telerik().DropDownList()
                          .Name("DropDownList")
                          .ClientEvents(events => events
                          .OnDataBinding("onDropDownListDataBinding"))
        %>

JS

   <script type="text/javascript">
            function onDropDownListDataBinding(e) {
                    var MyDdl = $('#MyDdl').data('tDropDownList');
                     MyDdl .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" }            
        ]);
            };
    </script>