0

Kendo MVVM DropDownList の次の html があります。

                <select id="responseTypeDDL"
                    data-role="dropdownlist"
                    data-text-field="SystemResponseTypeCode"
                    data-value-field="SystemResponseTypeId"
                    data-bind="value: selectedSystemResponseTypeCode, source: responseTypes">
                </select>

これは私のビューモデルです:

        SC.ViewModels.Reference.ResponseTypeDataSource.read();

        var responseTypeDDL = kendo.observable({
            responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource,
            selectedSystemResponseTypeCode: null,
            setSelectedSystemResponseTypeCode: function (code) {
                this.selectedSystemResponseTypeCode = code;
            },
        });

        kendo.bind($("#responseTypeDDL"), responseTypeDDL);

        // after reading data, I call the method to set the selected value like this:
        self.ResponseTypeDDL.setSelectedSystemResponseTypeCode(results.code);

ResponseTypeDataSource.read() メソッドは、「XML」、「JSON」のリストを返します。これは SystemResponseTypeCode フィールドです。また、データベースから別のデータ項目を読み取り、その応答タイプを確認します。「JSON」としましょう。「JSON」が選択されるようにドロップダウンを設定するにはどうすればよいですか?

4

2 に答える 2

2

まずこの部分が間違っているようです

setSelectedSystemResponseTypeCode: function (code) {
    this.selectedSystemResponseTypeCode = code;
},

set()監視対象の変数を変更する際は必ずメソッドを呼び出す必要があります。そうしないと、バインディングが更新されない可能性があります。

this.set("selectedSystemResponseTypeCode", code);

そして、あなたの実際の質問について

data-value-primitive="true"ID ( Kendo Docs ) だけで動作するように設定する必要があります(以下の変更点に注意してくださいvalue: selectedSystemResponseTypeId) 。

<select id="responseTypeDDL"
    data-role="dropdownlist"
    data-text-field="SystemResponseTypeCode"
    data-value-field="SystemResponseTypeId"
    data-value-primitive="true"
    data-bind="value: selectedSystemResponseTypeId, source: responseTypes">
</select>
SC.ViewModels.Reference.ResponseTypeDataSource.read();

var responseTypeDDL = kendo.observable({
    responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource,
    selectedSystemResponseTypeCode: null,
    selectedSystemResponseTypeId: null,
    setSelectedSystemResponseTypeId: function (id) {
        this.set("selectedSystemResponseTypeId", id);
    },
});

kendo.bind($("#responseTypeDDL"), responseTypeDDL);

// Get your id
var id = ...    
responseTypeDDL.setSelectedSystemResponseTypeId(id);

作業例: http://dojo.telerik.com/AbIm/8

于 2014-08-15T07:19:03.147 に答える
0

選択した値にアクセスして他のフィールドを表示する必要があるため、 data-value-primitive="true" に頼らずにドロップダウンリストに値を手動で設定することができました。

解決策は次のとおりです。

var id = 1004;
var dataItem = responseTypeDDL.responseTypes.get(id); //get the id in your datasource
responseTypeDDL.set("selectedsystemResponse", dataItem);
于 2015-06-24T07:02:21.417 に答える