2016-09-21 52 views
0

所以我这是这样新的剑道数据源为空?

var newArrary = Array(); 
for (var i = 0; i < result.length; i++) { 
    if (result[i].Id != TaskId) { 
     newArrary.push({text:result[i].Name, value:result[i].Id}) 
    } 
} 

我做了的console.log,可以看到,数组得到正确初始化定义的数组。 enter image description here

我再接着创建一个新的数据源

var dataSource = new kendo.data.DataSource({ 
     data: newArrary 
    }); 

,并检查,看看它是正确初始化

enter image description here

但是当我尝试将其设置为与我的下拉列表中的setDataSource方法的下拉列表,它抱怨大约Uncaught TypeError: Text.indexOf is not a function

所以我做了一个简单的dataSource.at(1)并得到'undefined'。不知道我在这里做错了什么?

更新添加更多的代码:

如何创建/配置的下拉

@(Html.Kendo().DropDownListFor(m => m) 
       .BindTo(list) 
       .DataTextField("Text") 
       .DataValueField("Value") 
       .HtmlAttributes(attributes) 
       .OptionLabel(string.IsNullOrEmpty(label) ? (required && @dropDownList.Value != "0" && @dropDownList.Value != "" ? "" : " ") : label) 
       .Value(@dropDownList.Value) 
       .TemplateId("myTemplate") 
       .ValueTemplateId("dmyTemplate") 
     ) 

怎么我使用的的setDataSource

setTask = function (result, taskCodeStartList, taskCodeResultLisr) { 
    var selectedTaskItem = $("#" + taskStartList).data("kendoDropDownList") 
    var selectedFilterTask = $("#" + taskResultLisr).data("kendoDropDownList").value() 
    var newArrary = Array(); 

    for (var i = 0; i < result.length; i++) { 
     if (result[i].Id != selectedFilterTaskId) { 
      newArrary.push({text:result[i].Name, value:result[i].Id}) 
     } 
    } 

    var dataSource = new kendo.data.DataSource({ 
     data: newArrary 
    }); 

    selectedTaskCodeItem.setDataSource(dataSource); 
    return selectedTaskCodeItem; 
}; 
+0

请提供DropDownList配置以及您使用'setDataSource'的方式和位置。一个完整的虚拟'结果'示例将会非常有用。 – dimodi

+0

@dimodi我使用Kendo MVC,所以我不能真正创建一个工作示例,但我可以发布更多的代码。 –

回答

0

dataTextFielddataValueField设置用大写字母("Text""Value"),但是newArrary项目具有小写字母的字段(text,value)。这些应该匹配,否则小部件将无法处理新数据。

http://dojo.telerik.com/OQOle

我不知道有关

所以我做了一个简单的dataSource.at(1),并获得 '未定义'。

部分,因为一切看起来都不错。