Ext.grid.EditorGridPanel 中的启用-禁用单列单元格

Posted

技术标签:

【中文标题】Ext.grid.EditorGridPanel 中的启用-禁用单列单元格【英文标题】:Enable-Disable cells of single column in Ext.grid.EditorGridPanel 【发布时间】:2012-10-03 07:12:53 【问题描述】:

我有 EditorGridPanel,我希望根据同一行的其他列值启用-禁用单元格值,并且我正在使用 Extjs 3。当我试图在谷歌上找到解决方案时,我发现 我可以使用 RowEditing 插件。我不想用这个插件,有没有别的办法呢?

并且我想在点击编辑按钮时启用和禁用此功能,因此我可以在 "beforeedit" 事件中执行此操作。 在这里,我遇到的问题是如何访问一个特定的单元格对象以及如何启用和禁用该单元格对象。有方法可以启用-禁用整列 网格,但是否有任何方法可以返回该特定单元格对象并启用-禁用该单元格对象?

有谁知道有什么办法可以做到这一点,请告诉我。谢谢。

【问题讨论】:

【参考方案1】:

如果我正确理解你的意图,你应该看看这里:http://docs.sencha.com/ext-js/3-4/#!/api/Ext.grid.EditorGridPanel-event-beforeedit

据我了解,这是您一直在寻找的方法:http://docs.sencha.com/ext-js/3-4/#!/api/Ext.grid.GridView-method-getCell

将这两者结合在一起,您应该具有类似的功能,作为 EditorGridPanel 的“beforeedit”事件的侦听器。

onBeforeEdit : function(e) 
    var htmlCell = e.grid.getView().getCell(e.row, e.cell);
    Ext.fly(htmlCell).addClass('disabled');

【讨论】:

感谢 medvarztis 的回复,它现在对我有用。正如我之前考虑的那样,“beforeedit”事件是针对行触发的,但对于我们单击的每个单元格都会触发。所以我首先将字段名称设为 "var fldname= e.field;" 然后我为匹配的字段返回 false 以使其对 Ex: 禁用【参考方案2】:

更新:

正如我之前考虑的那样,“beforeedit”事件是针对行触发的,但对于我们单击的每个单元格都会触发。所以我首先将字段名称设为 "var fldname= e.field;" 然后我为匹配的字段返回 false 以使其对 Ex: var fldname= e.field;

禁用
onBeforeEdit : function(e) 
var fldname= e.field;
if(fldname == "FirstName" || fldname = "LastName")
return false;

因此它会禁用网格的“FirstName”和“LastName”列。

【讨论】:

以上是关于Ext.grid.EditorGridPanel 中的启用-禁用单列单元格的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJS 3 EditorGridPanel 中按渲染值排序

Ext JS EditorGridPanel - 如何拆分单元格以显示多行

EXT grid 怎样在JS里面动态设置为只读.不可编辑?

ExtJS 3.3 中的水平滚动网格

真心求解,为啥我的EXTJS的可编辑表格就是点击没反应不能编辑呢,我明明设置了editor

ExtJs 编辑器网格面板的问题