0

<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>

自分で作成した js 文字列を dataSource に追加できないのはなぜですか? 私は var Myresult = JSON.parse(jsonStr); で試しましたが

4

2 に答える 2

0

オブジェクトの配列であるローカル データを使用してデータソースを作成します (json 形式は、リモート データへのバインドにのみ使用できます)。

json 形式で項目を追加する場合は、まずそれらを解析する必要があります。

var parsedObject = JSON.parse(jsonObject);
dropdownlist.dataSource.add(parsedObject);

実際の例を参照してください: http://jsfiddle.net/lhoeppner/82Cyt/

DataSource ウィジェットを拡張してこれを行うこともできますが、そもそも JS オブジェクトの代わりに json 文字列を追加する理由が明確ではありません。

于 2013-10-15T02:11:33.847 に答える
0

問題は、addメソッドが JSON オブジェクトを期待しているときに文字列を追加していることです。したがって、次のいずれかを使用します。

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

または、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++) {
        json = {
            id  : jx,
            name: "blaaa" + jx
        };

        dropdownlist.dataSource.add(json);
    }
    dropdownlist.dataSource.add({ id: 21, name: "Strawbeery" });
</script>
于 2013-10-15T07:56:00.060 に答える