Javascript dropdownlist数据源添加创建的js字符串

Javascript dropdownlist数据源添加创建的js字符串,javascript,drop-down-menu,kendo-ui,datasource,Javascript,Drop Down Menu,Kendo Ui,Datasource,$(“#dropdownlist”)。kendoDropDownList({ 数据源:[ {id:1,名称:“Apples”}, {id:2,名字:“橙子”} ], dataTextField:“名称”, dataValueField:“id” }); var-dropdownlist=$(“#dropdownlist”)。数据(“kendoDropDownList”); var jsonStr=“”; 对于(var jx=3;jx


$(“#dropdownlist”)。kendoDropDownList({
数据源:[
{id:1,名称:“Apples”},
{id:2,名字:“橙子”}
],
dataTextField:“名称”,
dataValueField:“id”
});
var-dropdownlist=$(“#dropdownlist”)。数据(“kendoDropDownList”);
var jsonStr=“”;
对于(var jx=3;jx<21;jx++)
{
jsonStr='{'
+“id:”
+jx+
", "
+'姓名:'
+““blaaa_u'+jx+””
+ ' }';
dropdownlist.dataSource.add(jsonStr);
//给我一个“未定义”而不是一个水果(控制台中没有错误)
//console.log(jsonStr);
}
add({id:21,名称:“Strawbeery”});
//工作

为什么我不能在数据源中添加一个自己创建的js字符串?尽管我用var Myresult=JSON.parse(jsonStr)进行了尝试

使用本地数据创建数据源,本地数据是一个对象数组(json格式只能用于绑定到远程数据)

如果要添加json格式的项目,则必须首先解析它们:

<script>
$("#dropdownlist").kendoDropDownList({
  dataSource: [
    { id:1, name: "Apples" },
    { id:2, name: "Oranges" }
  ],
  dataTextField: "name",
  dataValueField: "id"
});
var dropdownlist = $("#dropdownlist").data("kendoDropDownList");
 var jsonStr = "";
 for (var jx = 3; jx  < 21; jx++) 
 {
     jsonStr = '{ '
                  + 'id : '
                  + jx + 
                  ", "
                  + 'name : '
                  + '"blaaa_'+jx+ '"'
                  + ' }';
                  dropdownlist.dataSource.add(jsonStr);
                  // give me an "undefined" not a fruit (no errors in console)
                  // console.log(jsonStr);
}
dropdownlist.dataSource.add({ id : 21, name : "Strawbeery" });
// works
</script>
见工作示例:


您还可以扩展DataSource小部件,这样它就可以为您实现这一点,但是,我们并不清楚为什么您首先要添加json字符串而不是JS对象。

问题在于,您添加的是字符串,而
add
方法需要json对象。因此,要么使用:

var parsedObject = JSON.parse(jsonObject);
dropdownlist.dataSource.add(parsedObject);
或者更容易构建JSON对象,如下所示:

dropdownlist.dataSource.add(JSON.parse(jsonStr));

$(“#dropdownlist”)。kendoDropDownList({
数据源:[
{id:1,名称:“Apples”},
{id:2,名字:“橙子”}
],
dataTextField:“名称”,
dataValueField:“id”
});
var-dropdownlist=$(“#dropdownlist”)。数据(“kendoDropDownList”);
var jsonStr=“”;
对于(var jx=3;jx<21;jx++){
json={
id:jx,
名称:“blaaa”+jx
};
dropdownlist.dataSource.add(json);
}
add({id:21,名称:“Strawbeery”});
<script>
    $("#dropdownlist").kendoDropDownList({
        dataSource    : [
            { id: 1, name: "Apples" },
            { id: 2, name: "Oranges" }
        ],
        dataTextField : "name",
        dataValueField: "id"
    });
    var dropdownlist = $("#dropdownlist").data("kendoDropDownList");
    var jsonStr = "";
    for (var jx = 3; jx < 21; jx++) {
        json = {
            id  : jx,
            name: "blaaa" + jx
        };

        dropdownlist.dataSource.add(json);
    }
    dropdownlist.dataSource.add({ id: 21, name: "Strawbeery" });
</script>