所以我有一个像这样定义的数组
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,可以看到数组已正确初始化。
然后我继续创建一个新的数据源
var dataSource = new kendo.data.DataSource({
data: newArrary
});
并检查并确认它是正确初始化
但是当我尝试在我的下拉列表中使用setDataSource
方法将其设置为下拉列表时,它会抱怨Uncaught TypeError: Text.indexOf is not a function
所以我做了一个简单的dataSource.at(1)
并得到了未定义的&#39;。不确定我在这里做错了什么?
更新添加更多代码:
我如何创建/配置下拉列表
@(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 :(得分:0)
dataTextField
和dataValueField
设置使用大写字母("Text"
,"Value"
),但newArrary
项目的字段为小写字母({{ 1}},text
)。这些应该匹配,否则小部件将无法处理新数据。
我不确定
所以我做了一个简单的dataSource.at(1)并得到了#undefined&#39;。
部分,因为其他一切看起来还不错。