3

これが私の問題です...

私はドロップダウンリストを自分のグリッドにバインドしたかったのです:


{
     field: "ContactTypeId",
     hidden: true
},
{
     field: "ContactTypeName",
     title: "Type",
     editor: ContactTypeAddressCombo
}

function ContactTypeAddressCombo(container, options) {
                $('<input placeholder="A" data-bind="value:ContactTypeId"/>')
                .appendTo(container)
                .kendoDropDownList({
                    autoBind: false,
                    dataTextField: "Name",
                    dataValueField: "ContactTypeId",
                    dataSource: {
                        type: "json",
                        serverFiltering: true,
                        transport: {
                            read: {
                                contentType: "application/json; charset=utf-8",
                                type: "POST",
                                url: "../Services/svcContact_Type.asmx/Search",
                                dataType: "json",
                                cache: false
                            },
                            parameterMap: function(options, operation) {
                                options.AddressFlag = 1;
                                options.PhoneFlag = 1;
                                options.EmailFlag = 1;
                                return kendo.stringify(options);
                            }
                        },
                        schema: {
                            data: "d"
                        }
                    },
                    index: 0
                });
            }

グリッドに新しい行を追加するときを除いて、すべてが完全に機能します。ドロップダウンは正常に読み込まれ、1 つの項目が選択されていますが、別の項目に変更しない限り、グリッドは選択された項目を認識しません (項目が選択されていても、グリッドのデータソースは 0 を送信します)。

解決策の 1 つは、最初のアイテムを常に値 0 の「1 つ選択」にすることです。これにより、ユーザーはアイテムを選択する必要があります。しかし、それは理想とはかけ離れています。それで... 他に提案はありますか?ドロップダウンリストには何らかのプレースホルダーがありますか?

ありがとう

4

1 に答える 1

3

この質問はインターネット上で何度も議論されており、各ユーザーはさまざまな方法で説明しています. 新しいアイテムを作成するときは、MVVM フレームワークが DropDownList の選択された値を適切に割り当てることができるようにデフォルト値を設定するか、編集イベントを使用して手動で行う必要があります。

つまり、モデル プロパティを null にすることはできません。文字列または数値にする必要があります。そうしないと、DropDownList で値を変更したときに適切に更新されません (DropDOwnList で使用される dataItem 全体が値として割り当てられます)。

詳細はこちら

于 2013-03-01T22:00:21.097 に答える