1

我正在尝试使用 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

我在我的 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”。

任何帮助表示赞赏。

4

3 回答 3

0

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

于 2012-08-23T17:30:57.653 回答
0

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

于 2012-09-07T21:43:48.640 回答
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);
}
于 2012-08-23T19:17:29.430 回答