2016-09-21 92 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),並獲得 '未定義'。

部分,因爲一切看起來都不錯。