如何禁用或啓用編輯爲DojoX中數據網格選擇性細胞即禁用或啓用DojoX中的數據網格編輯用於選擇性細胞
想象我有兩列(A,B)在數據網格中。我希望B的列值可以根據列A的值進行編輯。我已經看到了一個特定於DOJO版本的堆棧溢出解決方案。我想知道是否有API可以實現上述目標。
如何禁用或啓用編輯爲DojoX中數據網格選擇性細胞即禁用或啓用DojoX中的數據網格編輯用於選擇性細胞
想象我有兩列(A,B)在數據網格中。我希望B的列值可以根據列A的值進行編輯。我已經看到了一個特定於DOJO版本的堆棧溢出解決方案。我想知道是否有API可以實現上述目標。
我的優選的方法是重寫數據網格的
canEdit: function(inCell, inRowIndex)
方法。從這一點,你可以得到的項目:
this.getItem(inRowIndex)
然後制定出它是否應該爲可編輯與否,並返回真/假。
這確實會覆蓋列上的可編輯標誌,所以如果需要的話,您需要做一些事情。
這裏沒有API。我最近也有類似的要求,這裏是我如何實現它:
1)最初的列B是可編輯的,因爲我在網格的字段部分 2)使用onRowClick捕獲行的渲染。類似這樣的應該做的
dojo.connect(grid, "onRowClick", grid, function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
// get a value out of the item
msname = this.store.getValue(item, "msname");
if(msname != null &U& (trim(msname) == trim(offsetName))) {
dojox.grid.cells._Base.prototype.format(idx, item);
}
});
以下方法,然後不允許內聯編輯所需的列。我們將行索引和列索引傳遞給以下函數:
dojox.grid.cells._Base.prototype.format = function(inRowIndex, inItem){
var f, i=grid.edit.info, d=this.get ? this.get(inRowIndex, inItem) : (this.value || this.defaultValue);
d = (d && d.replace && grid.escapeHTMLInData) ? d.replace(/&/g, '&').replace(/</g, '<') : d;
//Check inRowIndex and inItem to determine whether to be editable for this row here.
if(this.editable && (this.alwaysEditing || (i.rowIndex==inRowIndex && i.cell==this))){
return this.formatEditing(d, inRowIndex);
}else{
return this._defaultFormat(d, [d, inRowIndex, this]);
}
}
希望有所幫助。可能你可以添加一個jsfiddle,我們可以嘗試修復它。
我會試一試,讓你知道結果。感謝您的快速幫助。 –
你能解釋一下函數dojox.grid.cells._Base.prototype.format的功能嗎? 在這種情況下,這是什麼? – Mat0