Javascript 用c字典自动完成
我使用的是KendoUITelerik,我想添加一个数据源,它是一个从c到js解析为对象的字典。如何获取对象值并将其添加到自动完成输入?我有以下代码:Javascript 用c字典自动完成,javascript,c#,asp.net-mvc,kendo-ui,telerik,Javascript,C#,Asp.net Mvc,Kendo Ui,Telerik,我使用的是KendoUITelerik,我想添加一个数据源,它是一个从c到js解析为对象的字典。如何获取对象值并将其添加到自动完成输入?我有以下代码: var availableCategories = JSON.parse(@(Html.Raw(Json.Encode(@Model.AvailableCategoriesJSON)))); $(document).ready(function () { var data=availableCategories; $("#categorie
var availableCategories = JSON.parse(@(Html.Raw(Json.Encode(@Model.AvailableCategoriesJSON))));
$(document).ready(function () {
var data=availableCategories;
$("#categories").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select category...",
separator: ", "
});
以及输入:
<input id="categories" />
如果我没弄错,您的availableCategories对象将如下所示:
[{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
{"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}]
但是您需要告诉小部件它将使用哪个属性。因此,我建议您以友好方式创建另一个虚拟属性,例如文本:
然后添加此选项:
dataTextField: "text"
结果:
var data = [{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
{"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}];
data.forEach(x => x.text = x[Object.keys(x)[0]]);
$("#categories").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select category...",
separator: ", ",
dataTextField: "text",
select: function(e) {
console.log("Selected item", e.dataItem);
}
});
如果viewmodel中有可用的类别,为什么要对JSON进行编码和解码?只需以数组语法输出。因为在我选择一个类别后,我会保存类别Id。从js对象很容易做到这一点。你有什么问题?什么不起作用?你能显示你的AvailableCategoriesJSON内容吗?AvailableCategoriesJSON是一个C字典,我正在转换成一个js对象,看起来像{Guid:string},我想使用这个对象作为自动完成输入的数据源
var data = [{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
{"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}];
data.forEach(x => x.text = x[Object.keys(x)[0]]);
$("#categories").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select category...",
separator: ", ",
dataTextField: "text",
select: function(e) {
console.log("Selected item", e.dataItem);
}
});