Extjs4 ExtJS 4.x:如何禁用;“肮脏记录”;Ext.grid.Panel单元格中的红色角?
我有一个Ext.grid.Panel(又名gridpanel)和一个存储,仅用于客户端视觉效果(即,没有任何内容保存到服务器)。当我创建新的模型实例并将它们添加到存储中时,它们会显示在网格中,并带有一个红色角(可能表示尚未保存存储更改) 目前,我正在对每个记录/模型调用.commit()方法,然后再将其添加到存储中,以防止网格中出现脏记录的红色角落 是否有一种更通用的方法可以简单地配置网格面板,使其不显示有关记录“脏”状态的任何可视指示器?Extjs4 ExtJS 4.x:如何禁用;“肮脏记录”;Ext.grid.Panel单元格中的红色角?,extjs4,Extjs4,我有一个Ext.grid.Panel(又名gridpanel)和一个存储,仅用于客户端视觉效果(即,没有任何内容保存到服务器)。当我创建新的模型实例并将它们添加到存储中时,它们会显示在网格中,并带有一个红色角(可能表示尚未保存存储更改) 目前,我正在对每个记录/模型调用.commit()方法,然后再将其添加到存储中,以防止网格中出现脏记录的红色角落 是否有一种更通用的方法可以简单地配置网格面板,使其不显示有关记录“脏”状态的任何可视指示器? 注意:中的解决方案要么涉及CSS,要么仅适用于ExtJ
注意:中的解决方案要么涉及CSS,要么仅适用于ExtJS3。我希望能找到一个适用于ExtJS 4的编程“设置”。尝试在store上编写侦听器,该示例在以下问题的答案中给出:一个选项是避免使用远程代理,而是使用带有autoSync:true的内存代理,然后使用Ext.Ajax.request调用手动将数据加载到其中 远程代理是相当硬的编码,用于跟踪是否已将更改保存到服务器
如果您想跟踪它们是否保存到服务器,而只是删除带有角的可视指示,请使用CSS更改“脏”行的外观。如果要完全删除该跟踪,请不要使用远程代理。根据此处和Sencha论坛上的回复,在查看ExtJS源代码后,答案基本上是: 不,没有一种简单的方法(至少在4.0.7中)可以在不使用CSS的情况下将网格配置为不显示红色角。
感谢大家的集思广益和更多信息。我把这个扔了,这样将来遇到这个问题的人都能清楚地看到我问题的答案。它是有效的!但它和我一样脏。只是为了快速解决问题
.x-grid-dirty-cell {
background-image: none;
}
它在ExtJS4.1.1中再次工作。 在gridview中使用markDirty configurationProperty 如果有GridPanel,请按如下方式使用:
viewConfig:{
markDirty:false
}
事实上,有另一种方法可以通过编程解决这个问题(一种非CSS的黑客行为),并在ExtJS4.2中得到验证
record.modified = {};
或者更具体地说
delete record.modified[fieldName]
我有一个带有复选框的表单,它只表示瞬时数据。选中该框会将列标记为脏,这对我的手机没有意义。如果其他列不同步,它们可能需要脏标记。我的解决方案灵感来自@Roman的答案,但更多地控制了哪些列得到治疗 在配置列中:
{
xtype: 'checkcolumn',
tdCls: 'no-dirty',
dataIndex: 'selected',
width: 50,
text: 'Check'
},
在我的CSS中
.no-dirty.x-grid-dirty-cell
{
background-image: none;
}
我有一个类似的设置,有一个由
localStorage
代理支持的存储。当我使用这个存储在网格中获得脏记录时,我使用(这里来自ExtJS 4.2.1)将存储与网格同步,从而删除“脏”标记。好吧,我已经得到了脏记录的解决方案
要执行的步骤:
- 将记录的修改属性设置为空对象 e、 g.record.modified={}强>
- 这应该在调用ext的loadRecords()之前完成,它可能在model或store中(您可以重载ext.data.store的onProxyLoad()方法) )
- 脏记录红色标记将从网格中删除
- 更新流:它将只传递PUT调用中修改的字段(在脏加载中,它传递所有字段)
record.commit()
在更改记录后立即执行。但是markDirty
是最好的方法。对于TreePanel也很好。我知道这是一篇老文章,但是对于ExtJS 4.2+,GridView有一个属性markDirty
,可以设置为false。