1

Kendo UI Grid を使用しており、カスタム テンプレートでポップアップ編集を使用するように設定しています。

    <script id="popup_editor" type="text/x-kendo-template">
    <div id="editor">
            <div class="k-edit-label">
                <label for="Type">Type</label>
            </div>

    <select data-role="dropdownlist" data-value-field="Type" data-text-field="Type"
                         data-bind="source: typeSource, value: selectedProduct"></select>

<div class="k-edit-label">
                <label for="Type">Option</label>
            </div>

<select data-role="dropdownlist" data-value-field="Option" data-text-field="Option"
                         data-bind="source: productsSource.Options, value: selectedOption"></select>
            </div>

</script>

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

    function ViewModel() {
        var getTypesUrl = "/Controller/Action";

        var viewModel = kendo.observable({
            typeSource: new kendo.data.DataSource({
                transport: {
                    read: {
                        url: getConditionTypesUrl,
                        dataType: "json"
                    },
                },
                batch: true,
                schema: {
                    model: {
                        id: "Type"
                    }
                }
            }),
            selectedType: null,
            selectedOption: null
        });

        kendo.bind($("#editor"), viewModel);
    }

ViewModel();

私のアクションは JSON を返します。

問題は、[新しいレコードの追加] ボタンをクリックしても、への呼び出しがなくgetTypesUrl、ドロップダウン リストにデータが入力されないことです。一般的な考え方は、タイプごとに異なるオプションを用意し、選択したタイプに応じて [オプション] ドロップダウンリストを設定することです。ボタンがクリックされたときにのみエディタが表示され、剣道がバインディングを作成できないために問題が発生すると思います。

4

1 に答える 1

1

ドロップ ダウン リストが各行で同じである場合は、データ ソースから値を取得し、これらを JavaScript のページの変数に格納し、ドロップ ダウン リストがこの新しいデータ ソースを指すようにします。JavaScript を使用して ID と名前を関連付けます。

または、これが他のロジックに基づいて読み込まれる場合は、別の呼び出しを実装して、ビュー モデルのドロップダウン リストのデータ ソースを設定します。

http://www.aspnetwiki.com/page:introduction-to-kendo-mvvm

http://www.aspnetwiki.com/page:kendo-mvvm-ui-grid

さらに、テンプレートを純粋に JavaScript で記述し、これを html にバインドできることに注意してください。その利点は、デバッグでき、後で ajax 呼び出しによってロードでき、サイズが小さくなる可能性が高いことです。

于 2013-03-19T02:53:20.643 に答える