ExtJS 4 - 当列编辑器是组合框时如何避免网格列值变为空?

Posted

技术标签:

【中文标题】ExtJS 4 - 当列编辑器是组合框时如何避免网格列值变为空?【英文标题】:ExtJS 4 - How to avoid grid column value becoming null when column editor is combo-box? 【发布时间】:2011-10-20 13:55:41 【问题描述】:

我在网格中有一个列,编辑器作为组合框。

加载网格后,所有列值都会正确显示。

问题是,当用户单击列(将组合框作为编辑器)进行编辑时,列值变为空,如所附屏幕截图所示。

我知道该值变为空,因为组合框的存储尚未加载。

由于组合框存储中存在大量数据,我无法使用 autoLoad true。此外,即使我对带有分页的商店使用 autoLoad:true ,也只能保护第一页中存在的那些值,而不是全部。

因此,当网格列中的值不存在于用作列的编辑器的组合框的存储中时,我如何维护该值?

有人可以指导吗?

PS:我使用的是 ExtJS Ver 4.0.2a

【问题讨论】:

请注意,您的图像似乎无法正常工作。 感谢 Kelyan 提及。图像没有显示?实际上,我正在正确地看到图像。 图像现在显示给我。 NetEmp,你可以为那一栏发布你的渲染器吗? 感谢 Keylan 的评论,并为在其他帖子中拼错您的名字而道歉。我没有为本专栏使用的渲染器。列定义只有数据索引,它使用它映射到网格存储中的数据。 【参考方案1】:

我已经找到了解决方案。

这更多地与 ExtJs 的版本有关。如果我们升级到 4.0.7,然后对组合框使用 forceSelection:false,那么一切都会按预期正常工作。也就是说,组合框接受其存储中不存在的值,并且不会将当前值设置为 null。

希望这有助于其他人也在寻找类似的东西。

【讨论】:

【参考方案2】:

我建议让网格记录同时包含该列值和显示值。如果组合存储查找无法找到匹配值(因为该组合存储尚未加载),则恢复为显示与网格记录一起存储的显示值。

您可能还需要让网格上的 afteredit 事件更新网格记录在为特定行编辑该列之后显示值。

【讨论】:

感谢 Kelyan 的帖子。您能否详细说明您的意思是什么 - “让网格记录包含该列值以及显示值”?您在这里指的是哪个显示值?我从服务器收到的值是显示值之一,但由于商店尚未加载,因此它不会在编辑时显示。我正在考虑通过关闭 forceSelection 来解决此问题,以便也可以显示不在存储中的值。对此有任何想法吗?再次感谢。

以上是关于ExtJS 4 - 当列编辑器是组合框时如何避免网格列值变为空?的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4.1.x - 里面有一个组合框的选择器

ExtJS 组合框不呈现

ExtJS组合框无法渲染

extjs 5 将值设置为具有远程值的组合框时出错

ExtJS 4.2网格单元格编辑如何将列值与组合显示值绑定

ExtJS Combobox Rowediting在单击更新后不显示最新值