2
我在手動設置/刪除Kendo網格控件上的「髒標誌」指示燈時遇到了問題。網格「髒」標誌沒有更新
我已經擴展了教程preserve dirty indicators以包括dataSource.change
事件期間對value
字段附加驗證:
- 以前保存
value
(其含有id
),其已經被修改爲0 - 這是一個有效的「髒標誌」(e.items[0].id > 0 && e.items[0].value === 0
) - 甲
value
已輸入與大於0的值 - 這是一個有效的「髒旗」(e.items[0].value > 0
) - 的
value
任何其他實例不是一個有效的‘髒標誌’,因此應被刪除 - 如果用戶已離開
value
字段‘空白’,即‘空’,修改該值爲0(if (!e.items[0].value) {e.items[0].value = 0;}
)
隨着這些變化應用中,change
事件現在看起來像:
change: function (e) {
if (e.action == "itemchange") {
if ((e.items[0].id > 0 && e.items[0].value === 0) || e.items[0].value > 0) {
e.items[0].dirtyFields = e.items[0].dirtyFields || {};
e.items[0].dirtyFields[e.field] = true;
_dirty = true;
}
else {
if (!e.items[0].value) {
e.items[0].value = 0;
}
e.items[0].dirty = false;
e.items[0].dirtyFields = e.items[0].dirtyFields || {};
e.items[0].dirtyFields[e.field] = false;
}
$("#grid").data("kendoGrid").refresh();
}
}
ù在進行這些更改時,我可以看到dirtyField
函數(它是值列的template
)被觸發,並且還可以看到正在提供的適當值和正確的返回值(我認爲應該設置該值/刪除相應單元格中的「髒標誌」):
function dirtyField(data, fieldName){
if(data.dirty && data.dirtyFields[fieldName]){
return "<span class='k-dirty'></span>"
}
else{
return "";
}
}
但是,「髒標誌」不會被刪除,直到網格中的另一個單元格被修改。
這是一個Dojo example來演示這個問題。爲了複製:
- 輸入一個大於0的值到第二行
value
小區(設置「髒標誌」) - 來自第二行
value
小區刪除值(「髒標誌」保留 - >現在應該基於change
事件邏輯)消失 - 輸入一個大於0的值到第三行
value
細胞(套「髒標誌」上當前小區,從第二行value
小區)
感謝@sasha_gud,演示工作正常。出於某種原因,我似乎無法觸發我的網格定義上的'cellClose()'事件。你知道這是否是一個版本問題('cellClose'僅適用於特定版本)/作爲一個衝突的網格屬性? **編輯**更改您發送的演示中控件的版本以匹配我自己的版本,並且確實與控件的版本有關。 – Sandman