javascript - 分机JS : How to disable cell editing for individual cells in a grid?

标签 javascript extjs grid

我现在正在使用 Ext-JS 4.0.2 构建一个 Web 应用程序,我正在使用一个可编辑的网格来控制要在同一页面上为表格显示的数据。

为了使网格可编辑,我遵循了 API 文档并使用了以下内容:

selType: 'cellmodel',
plugins: [
    Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 2
    })
]

但是,对于此网格,有几个单元格不应更改。

我可以简单地让事件处理程序在网格中更改数据后将其更改回正确的状态,但这似乎很麻烦,难以维护且不可读。有没有更好的方法来做到这一点?我阅读了 API,但找不到任何有用的属性。

更新

对于这个特定的应用程序,只需禁用第一行即可。但我也有兴趣选择几个网格并使它们不可编辑(想象一个带有网格的数独游戏)。

最佳答案

据我所知,您希望第一行不可编辑。有一个丑陋但快速的解决方案。分配给您的插件 beforeedit 处理程序。当事件被触发时,检查正在编辑的行。如果是第一个 - 返回 false:

plugins: [
    Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 2,
        listeners: {
            beforeedit: function(e, editor){
                if (e.rowIdx == 0)
                    return false;
            }
        }
    })
]

查看 docs对于 beforeedit

更新

文档说 beforeedit 有这样一组参数:

beforeedit( Ext.grid.plugin.Editing editor, Object e, Object options )

但是有错误。正确的顺序是:

beforeedit( Object e, Ext.grid.plugin.Editing editor, Object options )

由于这个事实,我更新了示例。

关于javascript - 分机JS : How to disable cell editing for individual cells in a grid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913467/

相关文章:

javascript - 是否可以减少 Google Chrome 为我的网页分配的内存?

javascript - 单击链接时复制链接文本?

java - 定位装置(相交圆)

extjs - 商店的监听器功能在网格更新时触发两次

javascript - ExtJS 5 - 将在网格中双击的单元格的值传递到新窗口

javascript - 通过单值js过滤对象

asp.net-mvc - 一起使用 ASP.NET MVC 和 EXT JS

javascript - ExtJS 隐藏字段与存储

html - 优化流体网格布局

extjs - 在 ExtJs 中更改网格中行的颜色