2013-06-19 19 views
1

使用jQuery & AJAX從SQL數據庫檢索數據。我正在考慮使用jqGrid(如果可能的話)。當檢索到數據時,根據其優先級&是否必須確認,它可以在每行上顯示3個選項中的1個:下拉框(要求用戶選擇其中的選項),提交按鈕(以確認它被收到),或者可以說「不需要」。一般情況下,它看起來像下面的圖片:jQuery&jqGrid - 網格列中的多個選項

ActionPanel

Ajax調用是在某個區間&每隔30秒會刷新。

當用戶點擊/選擇它們時,會發生什麼事情需要採取行動,將更新數據源&用它們的響應和它們響應的日期時間更新行。

可能有多行下拉框,也可能有多行提交按鈕。一旦項目已被迴應(或者如果不需要的話),該消息將在下一次刷新時消失(被過濾掉)。

其他信息 - 下拉菜單中的項目對每一行都是相同的。另外,如果用戶打開了下拉菜單,則間隔將停止,並在選擇後重新啓動(下拉框打開時網格不應刷新)。

可以這樣做使用jqGrid,或更好/更容易使用另一個jQuery插件完成,或者應該在HTML(使用jQuery)完成?我將不勝感激任何意見。

編輯

我測試的網格現在(只顯示數據),看看它是如何使用setInterval工作。我使用下面的代碼來設置時間間隔。

iLoad = setInterval(function(){ 
    mytime = new Date(); 
    mytime = new Date(mytime - 60000); 
    mytimeString = ('00'+(mytime.getHours())).slice(-2) +":"+('00' + (mytime.getMinutes())).slice(-2) + ":"+ ('00' + (mytime.getSeconds())).slice(-2) + "."+ ('000' + (mytime.getMilliseconds())).slice(-3); 
    var cday = new Date(); 
    var curday = ('00'+(cday.getdate())).slice(-2); 
    var curmon = ('00'+(cday.getMonth())).slice(-2); 
    var curyr = cday.getFullYear(); 
    var currdate = curyr +"-"+curmon+"-"+curday; 
    gridload(id, mytimeString, currdate); 
    }, 60000); 

我注意到的是,在第一次被調用時,電網的確在數據源上一個GET,但後來,當間隔再次開火,這不是在做一個新的GET。我放入了一些日誌顯示,顯示它正在調用該功能,但網格代碼(loadComplete)中的顯示僅在第一次觸發。自從我傳遞的時間參數以來,我發送的時間就是要求在桌面上有新的東西,所以我期待着每一次都會觸發它。

設置間隔的代碼以前一直在獲取相同的信息將其放入一個HTML表格中,所以我知道間隔正在發射,就像它應該的那樣。

我沒有任何設置在網格上緩存或加載一次。我錯過了什麼?爲什麼不是間隔使數據上的後續GET

+1

*關於**編輯**你的問題的一部分:*你不包括'gridload'函數的代碼。你應該從空的'

** ** ** **創建**網格**。在創建空的'
'後將被轉換爲**複雜的div和表**結構。之後你應該使用'trigger(「reloadGrid」)'''''''''''''''''''有關代碼示例,請參見[答案](http://stackoverflow.com/a/10461964/315935)。 – Oleg

+0

@奧列格 - 我發現你昨天晚些時候提到的那個帖子,但那不是我真正的追求。由於每次調用時間間隔都會傳遞一個新時間,因此我想檢索(1)未響應(並且是要求)的內容,以及(2)自上次間隔後新增的內容。然後我發現你的帖子(http://stackoverflow.com/questions/4920323/jqgrid-gridunload-griddestroy/4920612#4920612)關於gridunload和gridDestroy之間的區別 - gridUnload是我需要使用的。我測試了網格的存在,然後卸載並從SQL中檢索數據。 –

回答

1

是的,這可以使用jqGrid或其他數據網格選項,如SlickGrid

使用jqGrid,您將需要使用Custom Formatter來進行特定的自定義到您希望的單元格。