-1

webservices を介して、dataBase から kendoCombobox に値のリストをバインドしたいと考えています。

コードは次のとおりです。

<select id = "CbxArea" style="width:200px">
</select>

$(document).ready(function () {
    var cmbArea = $("#CbxArea"),
        area;        
    cmbArea.kendoComboBox();  

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "FlashReportWebService.asmx/GetAreaNames",
        dataType: "json",
        success: function (data) {
            for (i = 0; i < data.d.length; i++) {
                area = data.d[i].AreaName;
                cmbArea.append($("<option> </option>").val(area).html(area));
            }
        }
    });
});

値のリストは正常に表示されますが、問題は最初の値のみがコンボボックスに表示され、残りの値が表示されないことです (リストに 16 個の値があります)。

cmbArea;合計16個の値の代わりに書き込むcmbArea.kendoComboBox();と、コンボボックスに表示されます。kendoComboBox.asmx ページからの値のバインドに問題はありますか?

kendoComboBoxのみを表示する必要があります。

4

4 に答える 4

1

<option>剣道フォーラムで回答したように、剣道コンボボックスはオリジナルに追加された要素を表示しません<select>。オプションが作成された後、コンボボックスを初期化する必要があります。

$(document).ready(function () {
    var cmbArea = $("#CbxArea"),
        area;        


    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "FlashReportWebService.asmx/GetAreaNames",
        dataType: "json",
        success: function (data) {
            for (i = 0; i < data.d.length; i++) {
                area = data.d[i].AreaName;
                cmbArea.append($("<option> </option>").val(area).html(area));


            }

            cmbArea.kendoComboBox(); 
        }
    });
});

Kendo DataSource を使用することもオプションであり、コードをかなり削減できます。

于 2012-11-29T20:24:10.537 に答える
0

で「変換」selectしたcomboboxため、コンボボックスに を直接入力することはできませんoptions。コンボボックスに新しい項目を追加したい場合は、これらの項目を dataSource に追加する必要があります:

var dataSource = cmbArea.data("kendoComboBox").dataSource;
for (i = 0; i < data.d.length; i++) {
    area = data.d[i].AreaName;
    dataSource.add({ text : area, value : area });
}

別の方法は、あなたが行ったようにあなたの栄養を維持し、selectこの栄養の後にそれをコンボボックスに変換することです:cmbArea.kendoComboBox();成功コールバックの最後(forループの後)に移動する必要があります。

于 2012-11-29T09:04:24.957 に答える
0

Samuel Caillerie が提案するものを最適化し、呼び出しdataSource.addを何度も回避するために、受信したデータと呼び出しdataSourceを 1 回だけ使用して配列を作成することをお勧めします。

var dataSource = cmbArea.data("kendoComboBox").dataSource;
var areas = [];
for (var i = 0; i < data.d.length; i++) {
    areas[i] = data.d[i].AreaName;
}
dataSource.data(areas);
于 2012-11-29T09:25:06.467 に答える
0

剣道のデータソースが使えるならこれが使えます。

$(document).ready(function () {
    var cmbArea = $("#CbxArea"),
        area;    
    cmbArea.kendoComboBox({
    dataSource: new kendo.data.DataSource({
        transport: {
            read: {
                url: "FlashReportWebService.asmx/GetAreaNames",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                type: "POST"
            }
        },
        dataTextField: "text", //Your Text value in JSON payload
        dataValueField: "value" //Your Value value in JSON payload
    });
});
于 2012-11-30T10:01:44.163 に答える