2010-10-05 41 views
0

我有一個數據庫表的日誌消息,並且在任何時候都可以插入新行。我想在網格中顯示它們,當您向下滾動時,我想要從該表(服務器端)請求更多行,但不會受到新添加的行影響。如果我刷新整個網格,新行只能是可見的。SmartGWT RestDateSource和尋呼(大數據集)動態數據

我不確定如何請求使用JDBC的範圍(從,到)的行。我認爲沒有可移植的(通過不同的數據庫)SQL查詢來做到這一點? (我正在使用MYSQL)

我認爲在閱讀此表的第一頁之後,我必須向客戶端發送來自日誌表的最大ID,然後在SQL中使用此最大ID作爲參數請求新行WHERE ID < = MAXID)但我不知道如何從服務器傳遞此參數到客戶端,並使用RestDateSource返回?

你有什麼更好的想法,我可以做到這一點?

P.S.我正在使用LGPL SmartGWT版本,並使用自己的servlet作爲服務器端。

+0

我還有一個想法:我可以從第一頁結果(第一個接收到的行的id)找到這個MAXID,但是隻有當我在用戶界面中禁用排序並不是那麼糟糕時,纔會起作用。但是,如何將這個參數從客戶端發送到另一個頁面的服務器以及如何使用JDBC請求範圍內的行? – 2010-10-05 10:20:59

回答

1

這是我會做的;我想你的每一行都有一個增長編號或時間戳。

在開始查詢數據之前,您需要調用Web服務來查詢當前的ID(例如最後一行是12345)。

然後,將一個Criteria對象添加到您的數據源,其中顯示「rowId < = 12345」。此時,您可以自由使用網格 - 分頁,排序等將自動工作,因爲新行將自動排除。 (或者,如果您使用個性化數據源而不是默認RESTdataSource,則基本上在不明確使用Criteria的情況下執行相同的操作)。

+0

這就是我所做的,它的工作原理:) – 2010-10-21 12:35:48

+0

順便說一下,我怎樣才能讓「不那麼平等」的crieteria? – 2010-10-21 12:37:31

+0

我會去「rowId <(12345 + 1)」 – Lenz 2010-10-21 13:14:12

0

SmartGWT Pro和更好地自動執行此操作。即使您不想使用Pro,也可以下載評估版(smartclient.com/builds)並觀察記錄SQL查詢的服務器端控制檯。

+0

我看到他們正在使用LIMIT(SQL),但他們仍然存在新插入行的問題。 http://www.stackoverflow.com.s3.amazonaws.com/Concurent%20Insert.png – 2010-10-06 11:27:39

+0

我們提供一個標誌,您可以設置來自服務器的響應以使當前緩存無效。確定何時使緩存無效是基於類似於上述策略(rowId)的策略,當然該策略不處理刪除。由於這樣做需要您有序列字段或類似字段來跟蹤更改,因此我們不會自動打開它。但是,如果您有可用的數據來執行檢測,則很容易添加。我們的服務器框架允許您添加Java邏輯,這些邏輯除了針對這種用法的自動SQL操作外還運行。 – 2011-04-21 18:18:24