2010-11-14 96 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