如何在dojox数据网格中禁用或启用选择性单元格的编辑,即
假设我在数据网格中有两列(A,B)。 我希望 B 的列值可以根据 A 列的值进行编辑。我已经在堆栈溢出中看到了一个特定于 DOJO 版本的解决方案。我想知道是否有可以实现上述目标的 API。
我的首选方法是覆盖
canEdit: function(inCell, inRowIndex)
数据网格的方法。 从中,您可以获得该项目:
this.getItem(inRowIndex)
然后确定它是否应该可编辑,并返回 true/false。
不过,这确实会覆盖列上的可编辑标志,因此如果需要,您需要对其进行一些操作。
没有这样的 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,我们可以尝试修复它。