我有一個使用綁定到名爲'工作者'(ID,Workername)的對象的組合框的列的kendo網格。這可以正常工作,除非用戶將組合框文本設置爲與任何下拉選項不匹配的字符串(例如:'xxxx')。組合框設置Worker的值爲一個字符串('xxxx')而不是一個Worker對象,此時dataSource在接收到格式錯誤的數據時停止響應。劍道網格組合框發送未定義的數據到DataSource
我已經得到了這個在dataSource'change'事件中工作,它在網格的'save'事件之後觸發。違規的DataItem的財產將被替換爲變量myWorkerStart(網格的編輯事件捕獲):
myDataSource.bind("change", function (e) {
if (e.field) {
if (e.field == "Worker") {
rowDataItem = myGrid.dataItem(myGrid.tbody.find("tr.k-grid-edit-row"));
var currentWorker = rowDataItem.Worker;
var myType = $.type(currentWorker);
if (myType != "object") {
alert('Ooooh, BAD worker, reverting to starting value');
rowDataItem.set('Worker', myWorkerStart);
}
}
}
alert("datasource change");
})
我見過在Telerik的論壇,主要是沒有答案一對夫婦線程的主題。 Telerik支持告訴我,我應該在網格的「保存」事件中解決未定義的值,但是在該行由組合框設置之前觸發。我可以看到這些值,但我不確定可以設置值的位置以防止將未定義的值發送到dataSource(容器,模型)有沒有更好的方法來在未定義的組合框值發送之前解決格式錯誤的數據到電網?
myGrid.bind("save", function (e) {
myCombo = $('#Worker').data("kendoComboBox");
rowDataItem = myGrid.dataItem(myGrid.tbody.find("tr.k-grid-edit-row"));
myPreviousWorker = e.model.Worker;//Worker previously
myNewWorker = myCombo.dataItem();//Worker about to be set by selected Combobox.
if (myNewWorker) {
alert("GOOD worker");
} else {
alert("BAD worker");
}
//Manipulate the combobox/container/model values
})