Сброс значений дочернего виджета Kendoui, когда родительский виджет испытывает событие изменения

У меня есть родительский и дочерний виджеты со списком, которые инициализируются значениями. Я указываю "инициализировано со значениями", потому что у меня нет проблем, когда я имею дело с родительскими и дочерними виджетами, которые инициализируются без каких-либо значений.

Вот код инициализации родительского виджета:

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
        });

В событии select родителя я делаю это:

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);

должно было быть достаточно, чтобы очистить выбор от дочернего виджета. Распечатки в консоли во время выполнения показывают, что значения "". Однако в пользовательском интерфейсе я все еще вижу старые значения дочернего виджета. Поэтому, если бы старый dataText дочернего виджета был "Токио" с dataValue, равным 3, я бы увидел значение "3", отображаемое в дочернем виджете. Любые пункты будут с благодарностью.

1 ответ

Согласно документации для события Select:

"Событие не запускается, когда элемент выбран программно".

Говорят, чтобы использовать событие Каскад:

"Запускается, когда значение виджета изменяется через API или взаимодействие с пользователем".

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

Другие вопросы по тегам