无法使用jquery填充telerik下拉列表

时间:2012-08-23 16:58:45

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

我正在尝试使用jquery填充Telerk下拉列表。以下是我的建议:

var dropDownList = $('#DropDownList').data('tDropDownList');

var dataSource = 
[
    { Text: "Product 1", Value: "1" },
    { Text: "Product 2", Value: "2" },
    { Text: "Product 3", Value: "3" }
];

dropDownList.dataBind(dataSource);

在这里,我需要以下JavaScript文件才能使其正常工作:

  1. 的jquery-1.7.1.min.js
  2. telerik.common.min.js
  3. telerik.list.min.js
  4. 我在我的Site.Master中使用其他CSS和JS文件注册了它们:

    <head runat="server">
        <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
        <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
        <link href="/Content/telerik.common.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="/Scripts/jquery-1.7.1.min.js"></script>
        <script type="text/javascript" src="/Scripts/Students.js"></script>        
        <script type="text/javascript" src="/Scripts/telerik.common.min.js"></script>
        <script type="text/javascript" src="/Scripts/telerik.list.min.js"></script>
        <script type="text/javascript" src="/Scripts/telerik.combobox.min.js"></script>
    </head>
    

    然后在Site.Master的最后我使用ScriptRegistrar:

    <%= Html.Telerik().ScriptRegistrar() %>
    

    但是,当我运行应用程序时,我收到以下“未定义”错误:

     'undefined' is null or not an object
    

    在线:

    dropDownList.dataBind(dataSource);
    

    这是我的DDL:

    <%= Html.Telerik().DropDownList()
    .Name("DropDownList")
    .HtmlAttributes(new {@id = "DropDownList"})
    .Items(items => {
        items.Add().Text("Select").Value("Select");
            })                     
            %> 
    

    我在这里错过了一些步骤吗?我是否需要在拥有DDL的页面上注册java脚本文件? “site.master”是我已经注册了JS文件的“MasterPageFile”。

    感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

尝试删除jquery的其他版本,只留下jquery-1.7.1.min.js并首先注册它。希望这有帮助!

答案 1 :(得分:0)

在Telerik DropDown组件加载(初始化)之后,您应该运行绑定代码。 通过声明OnLoad事件处理程序来实现此目的的一种方法:

.ClientEvents(events => events.OnLoad("List_OnLoad"))

function List_OnLoad(){
  var dropDownList = $(this).data('tDropDownList');
  // the same as 
  //var dropDownList = $('#DropDownList').data('tDropDownList');
  dropDownList.dataBind(dataSource);
}

答案 2 :(得分:0)

将另一个ScriptRegistrar放入您的页面,并将您的代码放在OnDocumentReady方法中。这将在您的site.master ScriptRegistrar中的ScriptRegistrar中注册您的函数,并且一切都应该正常工作,因为此时控件已经初始化。希望这会有所帮助。