【问题标题】:keep my sort after updating the dataprovider's data更新数据提供者的数据后保持排序
【发布时间】:2019-09-13 03:02:15
【问题描述】:

我有一个数据网格,其中 dataprovider 中的数据每 30 秒自动更改一次。每次这样做时,如果我选择通过单击标题对列进行排序,它将恢复为默认排序(在我单击标题之前)。我想知道如何控制排序,这样如果我之前点击过它,它将在接下来的 30 秒内保持排序状态。

<mx:DataGrid id="id" width="100%" height="100%">
                        <mx:columns>
                            <mx:DataGridColumn dataField="@col1" headerText="Type1" itemRenderer="itemRenderer" />
                            <mx:DataGridColumn dataField="@col2" headerText="Type2" itemRenderer="itemRenderer" />
                        </mx:columns>
                        <mx:dataProvider>
                            {xmllist_extractedfromAnotherSourceEvery30Seconds}
                        </mx:dataProvider>
</mx:DataGrid>

【问题讨论】:

    标签: apache-flex actionscript mxml


    【解决方案1】:

    猜测...排序顺序存储在 dataProvider (ArrayCollection) 中,当您重新分配新的 dataProvider 时它会丢失。

    你可以:

    • 使用 ArrayCollection 更新函数更新 dataProvider, 而不是重新分配它

    • 如果不可能,get the ISort 在更改之前来自 dataProvider;然后将此 ISort 应用到新的 dataProvider 之后 加载(并记得刷新()数据提供者)

    【讨论】:

    • 嗯,我在处理这两个提案中的任何一个时都遇到了麻烦,因为我受限于允许修改的代码量。我希望的是存储一个布尔值,表示列顶部的排序按钮被点击或未被点击,并在下次刷新时将其设置为点击。有这样的可能吗?
    • 很遗憾,如果您无法控制 dataProvider,您将无法控制排序。
    • 关于你的第二个选项,你能告诉我代码实现吗?
    • 我检索了一篇旧帖子(但仍然有效),描述了第二种方法的实现:justinjmoses.wordpress.com/2008/06/26/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多