如何在 Flex 4 的可编辑数据网格中禁用自动排序

Posted

技术标签:

【中文标题】如何在 Flex 4 的可编辑数据网格中禁用自动排序【英文标题】:How to disable automatic sorting in Editable Datagrid in Flex 4 【发布时间】:2011-07-10 21:06:06 【问题描述】:

我有一个可编辑的数据网格。如果通过单击数据网格的任何标题来应用排序,则可以正常工作。但在那之后,如果数据网格的任何一行中的数据值发生变化,则会自动应用排序。如何防止这种行为?即仅当用户单击数据网格的任何标题时才应应用排序,并且当用户修改网格中的数据时不应应用排序。

【问题讨论】:

【参考方案1】:

您必须将sortableColumns 设置为false 并处理headerRelease 事件,您可以在其中对数据源执行sorting manually。

<mx:DataGrid sortableColumns="false" headerRelease="onHeaderRelease(event)" ...

【讨论】:

感谢您的回复,我的要求是在编辑数据网格的任何列后停止自动排序,即如果用户修改了可编辑数据网格的任何列,itemEditEnd 事件会随着自动排序而触发。例如,如果用户更改了第一行中的值,则在此更改后,修改后的行可能会通过自动排序成为数据网格的最后一行。我的问题是我们可以停止这种自动排序吗?将 sortableColumns 设置为 false 只会阻止用户通过单击标题来停止排序。 @zolo:据我了解,在您第一次点击标题之前,不会应用自动排序。 是的,我想停止在 itemEditEnd 之后触发的自动排序,即使在单击标题后也是如此。但是用户可以随时通过单击标题手动对数据进行排序。【参考方案2】:

在您的项目编辑器中提交值之前,只需调用Object(owner).dataProvider.disableAutoUpdate()

【讨论】:

【参考方案3】:

我知道您在 Flex 4 中提出了这个问题,但我希望我在 Flex 3 中找到的解决方案会有所帮助。

我也遇到了同样的问题,但后来我意识到数据中的某些东西一定会触发排序发生。 事实证明,我正在将数据设置为 [Bindable]。看到排序自动发生是有道理的,因为值更改调度 propertyChange 事件。

如果您确实需要将数据设为 [可绑定],请使用自定义绑定: http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_4.html

【讨论】:

以上是关于如何在 Flex 4 的可编辑数据网格中禁用自动排序的主要内容,如果未能解决你的问题,请参考以下文章

无论 ag-Grid 中的 colDef 可编辑值如何,如何禁用整个网格?

AS3 禁用 Datagrid 内 textInput 的可编辑/可选择

使用行编辑器进行编辑时,如何在 extjs 4.1.1 中禁用行的特定单元格?

如何在 ExtJS 4.1 中禁用网格中的某些行

如何在 Flex DataGrid 中结束/停止项目编辑

编辑网格时,如何按行禁用特定字段?