我有一个带有商店的Ext.grid.Panel(又名gridpanel),仅用于客户端视觉效果(即,没有任何内容保存到服务器)。当我创建新的模型实例并将它们添加到商店时,它们会在网格中显示一个红色的角(可能表示存储更改尚未保存)。
目前,我在每个记录/模型上调用.commit()方法,然后将其添加到商店中,以防止网格中的脏记录红色角落。
是否有更简单的方法来简单地配置网格面板,以便不显示有关记录“脏”状态的任何可视指示器?
注意:this similar question中的解决方案涉及CSS或仅适用于ExtJS 3.我希望找到一个适用于ExtJS 4的编程“设置”。
答案 0 :(得分:60)
它再次在ExtJS 4.1.1中工作。 在gridview中使用markDirty configurationProperty。
当你有一个GridPanel时,请像这样使用它:
viewConfig:{
markDirty:false
}
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.View-cfg-markDirty
答案 1 :(得分:7)
基于此处和Sencha论坛的回复,在查看ExtJS源代码后,答案基本上是:
不,没有一种简单的方法(至少在4.0.7中)将网格配置为不显示红色角而不使用CSS。
感谢所有人的头脑风暴和其他信息。我把它扔了,所以今后遇到这个问题的人都能看到我问题的明确答案。
答案 2 :(得分:4)
一种选择是避免使用远程代理,而是使用带有autoSync的内存代理:true,然后使用Ext.Ajax.request调用手动将数据加载到其中。
远程代理非常硬编码,可以跟踪是否已将更改保存到服务器。
如果要跟踪它们是否已保存到服务器,只是删除带角的可视指示,请使用CSS更改“脏”行的外观。如果要完全删除该跟踪,请不要使用远程代理。
答案 3 :(得分:4)
我有一个带有复选框的表单,它只代表瞬态数据。选中此框会将列标记为脏,这对我的单元格没有意义。如果它们不同步,其他列可能需要脏标记。我的解决方案受到@ Roman的答案的启发,但可以更好地控制哪些列得到治疗。
在列配置中:
{
xtype: 'checkcolumn',
tdCls: 'no-dirty',
dataIndex: 'selected',
width: 50,
text: 'Check'
},
在我的CSS中
.no-dirty.x-grid-dirty-cell
{
background-image: none;
}
答案 4 :(得分:3)
有效!但它对我来说很脏。只是为了快速解决方案。
.x-grid-dirty-cell {
background-image: none;
}
答案 5 :(得分:1)
实际上,在ExtJS 4.2中还有另一种以编程方式修复此问题(非CSS黑客)的方法
record.modified = {};
或更具体地说,
delete record.modified[fieldName]
答案 6 :(得分:1)
好吧,我已经得到了脏记录的解决方案,
要做的步骤:
将记录的修改属性设置为空白对象;
e.g。 record.modified = {};
这应该在调用ext的loadRecords()之前完成,可能在模型或存储中(你可以重载Ext.data.Store的onProxyLoad()方法) )
<强>修正:强>
答案 7 :(得分:0)
尝试针对此问题的答案示例中的写入侦听器:EXT JS Store's Proxy: readers and writers