当父窗口小部件经历更改事件时,取消设置kendoui子窗口小部件值

时间:2015-02-05 15:37:18

标签: kendo-ui kendo-combobox kendo-ui-mvc

我有父母&使用值初始化的子组合框小部件。我指定“用值初始化”,因为当我处理父母和母亲时,我没有任何问题。初始化没有任何值的子窗口小部件。

这是父窗口小部件初始化代码:

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

应该足以清除子窗口小部件中的选择。执行期间控制台中的打印输出显示值为“”。但是,在UI中,我仍然看到显示子窗口小部件的旧值。因此,如果子窗口小部件的旧dataText是“Tokyo”,dataValue为3,我会在子窗口小部件中看到值“3”。任何积分都将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据Select事件的文档:

"以编程方式选择项目时不会触发事件。"

他们说要使用Cascade活动:

"通过API或用户互动更改窗口小部件的值时触发。"

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