値で初期化される親と子のコンボボックス ウィジェットがあります。値なしで初期化された親子ウィジェットを扱っているときに問題がないため、「値で初期化」を指定します。
親ウィジェットの初期化コードは次のとおりです。
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" が表示されます。どんな点でも大歓迎です。