我现在正在使用 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/