【问题标题】:Possible Data caching issue with flex datagridflex datagrid 可能存在数据缓存问题
【发布时间】:2010-11-14 14:04:08
【问题描述】:

我有一个应用程序,其中有 5 个选项卡。每个选项卡都有一个数据网格。第一个选项卡中数据网格的数据提供者是其他选项卡中数据网格的通用数据提供者。每个选项卡中的数据根据​​状态而有所不同,除了我显示所有数据的第一个选项卡。现在主选项卡的数据每分钟刷新一次,使用计时器从后端获取新数据[使用 Blazeds 与服务器端代码交互,即 Java]。

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

我只是想知道这个问题是否是由于客户端的数据缓存造成的,如果是这样,有什么办法可以解决这个问题?

【问题讨论】:

  • 提供一些代码。除非所有 DataGrid 都使用相同的 dataProvider,否则没有理由期望从一个网格(和 dataProvider)中删除所有其他网格都会更新的项目。如果您的数据需要每分钟更新一次,您应该考虑使用可以向客户端执行数据推送的服务器,例如 GaniteDS 或 LiveCycle。

标签: java apache-flex caching actionscript blazeds


【解决方案1】:

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

也就是说,我最好的猜测是,我认为您遇到了一种情况,您正在更新指针或复制 ref 而不是实际数据,并且它正在通过绑定或类似的方式重置为该指针。

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

(顺便说一句,这是快速调试此类问题的方法)。

【讨论】:

  • 这是一个很老的问题,不再有效。实施已更改,问题不再存在。无论如何,感谢您的输入 Nate :)。下次我在 ArrayCollection 上工作时,我一定会记住这一点。
  • 我想我回答了您的另一个问题,然后看看您是否还有未回答的问题。就这样。 :)
【解决方案2】:

根据您的情况,如果不查看您的代码,很难说。我同意 Flextras 通过的 cmets。

删除后,它不会显示在选项卡中,并且在您导航时 到主选项卡它也不显示 只有当你回来时 再次到同一个标签,它没有 得到反映。

您的数据库查询似乎存在问题 [可能是]。您为什么不重新检查您的查询,一旦执行删除操作,数据库表是否会得到反映。

如果上述结果为假,则返回下一步。

  • dataprovider 的 trace() 是做什么的 给你。我的意思是它是什么 包含?在选择事件上试试这个 选项卡。

  • 您的 dataprovider 可能保留了以前的值,尽管项目来自 被删除的网格不反映数据提供者。你是否 尝试刷新数据网格或为什么不调用 invalidateProperties() 检查方法。

  • 又是一段代码标签 可以帮助您和我们花费大量时间对问题做出正确的回应。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 2011-06-09
    • 1970-01-01
    • 2012-03-12
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多