-1

値で初期化される親と子のコンボボックス ウィジェットがあります。値なしで初期化された親子ウィジェットを扱っているときに問題がないため、「値で初期化」を指定します。

親ウィジェットの初期化コードは次のとおりです。

var jsonObj = GetSavedJSONObject(key);
        var value = (jsonObj) ? '' + jsonObj.Id : '';
        var text = (jsonObj) ? '' + jsonObj.Name : '';
        $("#" + key).kendoComboBox({
            placeholder: placeholder,
            dataTextField: dataText,
            dataValueField: dataValue,
            filter: "contains",
            autoBind: false,
            enable: canEditAll,
            dataSource: {
                type: "jsonp",
                transport: {
                    read: {
                        url: urlValue,
                        type: "POST"
                    }
                },
                error: function (e) {
                    console.log(e);
                }
            },
            value : value,
            text : text,
            select: selectEvent,
            change: changeEvent
        });

子ウィジェットの初期化コードは次のとおりです。

var jsonObj = GetSavedJSONObject(key);
        var value = (jsonObj) ? '' + jsonObj.Id : '';
        var text = (jsonObj) ? '' + jsonObj.Name : '';
        $("#" + key).kendoComboBox({
            placeholder: placeholder,
            cascadeFrom: cascadeFromId,
            dataTextField: dataText,
            dataValueField: dataValue,
            filter: "contains",
            autoBind: false,
            delay: 300,
            enable: canEditAll,
            dataSource: {
                type: "jsonp",
                serverFiltering: true,
                transport: {
                    read: {
                        url: urlValue,
                        data: getRateTypeSelected,
                        type: "POST"
                    }
                },
                error: function(e) {
                    console.log(e);
                }
            },
            value : value,
            text : text,
            select: selectEvent2,
            change: changeEvent2
        });

の選択イベントで、私はこれをやっています:

var childCombobox = $("#childWidget").data("kendoComboBox");
            if (childCombobox ) {  
                //setting parent value here
                e.sender.value(dataItem.Id);
                //should unset/clear the child widget per docs
                childCombobox.value(null);
                childCombobox.dataSource.read();
                if ($"#parentWidget").val()){
                    childCombobox.enable(true);
                }else{
                    childCombobox.enable(false);
                }
                console.log(childCombobox.value());
                console.log(childCombobox.text());
                console.log(childCombobox.input.val());
                console.log($("#childWidget").val());
                console.log(childCombobox);
            }

私が見たドキュメントから、これを行う:

combobox .value(null);

子ウィジェットからの選択をクリアするには十分だったはずです。実行中のコンソールの出力は、値が "" であることを示しています。ただし、UI では、子ウィジェットの古い値がまだ表示されています。したがって、子ウィジェットの古い dataText が "Tokyo" で、dataValue が 3 の場合、子ウィジェットには値 "3" が表示されます。どんな点でも大歓迎です。

4

1 に答える 1

0

Selectイベントのドキュメントによると:

「アイテムがプログラムによって選択された場合、イベントは発生しません。」

Cascade イベントを使用するように言われています。

「ウィジェットの値が API またはユーザーの操作によって変更されたときに発生します。」

http://docs.telerik.com/kendo-ui/api/javascript/ui/combobox#events-cascade

于 2015-02-05T16:32:11.393 に答える