ExtJS Grid: Cell Editing: Blank cell if value entered is <SAMPLE>
在网格中使用编辑器时,我遇到了这个问题。
我在网上找到的几乎所有网格示例中都发现了这一点。
在具有文本字段等编辑器的网格中,尝试输入
当您失去焦点时,网格上会显示一个空白单元格。
但是,如果再次选择它进行编辑,则会保留实际输入的文本。
在这里尝试:http://docs.sencha.com/extjs/4.0.7/#!/api/Ext.grid.plugin.CellEditing
我知道这与html编码/解码有关,并且可以在edit事件中进行处理。
但是我觉得这应该由网格内部处理。
请提出更好的解决方案(如有)?我需要在网格中显示此类数据,所以这是一个真实的请求。
通常,您不想在输入时转义此类数据,而是在输出时转义。这样,用户的输入在数据存储中将保持不变。我认为这就是网格无法自行处理的原因。此外,如果您确实想在网格列上使用HTML,则是不可能的。
我个人在网格列上提供了一个转义器,用于转义值:
1 2 3 | renderer: function(value) { return Ext.util.Format.htmlEncode(value); } |
默认情况下,您还可以对所有网格列执行覆盖操作:
1 2 3 4 5 6 7 8 9 10 11 | Ext.override(Ext.grid.column.Column, { constructor: function(cfg) { this.callOverridden(arguments); if ('gridcolumn' === this.xtype && false === this.renderer) { this.renderer = function(value) { return Ext.util.Format.htmlEncode(value); }; } } }); |
这会将这样的渲染器添加到配置中未提供渲染器的所有列中(在这种情况下,此渲染器将需要照顾它)。
每当我有一个单元格值为
事实证明,网格不会逃逸单元格的值,以保护自己免受有关HTML标记的困惑。
这种想法使我整日迷失了一个模型/商店问题。在这里阅读更多有关它的信息:
http://www.sencha.com/forum/showthread.php?232292-Escaping-HTML-characters-in-editable-grids
一种解决方法在这里:
http://non-stop-ext.blogspot.com/2013/02/gridpanel-with-special-characters-and.html