如何在页面加载时填充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);
    });


任何帮助深表感谢。

最佳答案

您需要在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);
}

10-02 12:42
查看更多