2010-11-14 49 views
0

我有一个应用程序,其中有5个选项卡。每个选项卡都有一个数据网格。第一个选项卡中的数据网格的数据提供者是其他选项卡中的数据网格的常用数据提供者。每个选项卡中的数据都会根据状态变化,除了显示所有数据的第一个选项卡之外。现在主选项卡的数据每分钟刷新一次,使用计时器从后端获取新数据[使用Blazeds与服务器端代码交互,例如Java]。Flex数据网格可能存在数据缓存问题

在我对第一个标签以外的任何一个行执行任何操作后,我需要从该数据网格删除该行。我可以通过从数据提供者中删除条目来做到这一点,但只要我回到主选项卡并返回到我已经完成操作的选项卡,我就会找到删除的条目。这里要注意的一点是,条目不在主选项卡中,也不在我执行操作的选项卡中,但只要我在UI中显示的选项卡之间导航即可。但是,如果我使用F5进行刷新,则表现正常。

我只是想知道这个问题是由于客户端的数据缓存,如果是的话,是什么可以解决这个问题?

+1

提供一些代码。除非所有DataGrid使用相同的dataProvider,否则没有理由期望从一个网格(和dataProvider)中删除所有其他网格将更新的项目。如果你的数据需要每分钟更新一次,你应该考虑一个可以执行数据推送到客户端的服务器,比如GaniteDS或者LiveCycle。 – JeffryHouser 2010-11-14 15:29:45

回答

0

从你的情况很难说,没有看你的代码。我赞同Flextras通过的意见。

一旦你删除它不会在标签上显示的,当你浏览 主标签不要么显示 那里,只有当你再回来 到同一个标签不 得到体现。

看来你的数据库查询可能有问题[可能]。为什么不重新检查一次执行删除操作的查询,数据库表是否得到反映。

如果上述结果是错误的,则返回到下一步。

  • 什么dataProvider中 的痕迹()给你。我的意思是 包含什么?试试这个选项卡的选择事件 。

  • 您的数据提供者可能会保留之前的值,但 中的项目被删除并不反映数据提供者。您是否尝试刷新数据网格或为什么不调用invalidateProperties() 方法来检查。

  • 再一个代码标签 可以帮助你和我们很多时间给这个问题提供正确的解决方案。
1

从arrayCollection/data中删除对象 - 在其上运行collectionName.refresh()

这就是说,我最好的猜测是,我认为你遇到了更新指针或复制参考而不是实际数据的情况,它会通过绑定或类似的方式重置到指针中。

如果您在绑定到数据网格的对象上添加绑定侦听器/更改观察器,该数据网格获取CHANGE事件时会跟踪到控制台,我敢打赌您会收到惊喜!

(顺便说一句,这是如何快速调试这种类型的问题)。

+0

这是一个非常古老的问题,不再有效。实施已经改变,问题不再存在。无论如何感谢您的输入Nate :)。下次我在ArrayCollection上工作时,我会牢记这一点。 – Arun 2011-07-14 04:58:33

+0

我想我回答了你的另一个问题,然后看看你有没有回答。就这样。 :) – Nate 2011-07-14 05:17:14