2013-03-07 20 views
1

我是新來的jqGrid,但我學得很快......我使用的jqGrid與本地數據的jqGrid與當地排序的數據,如何正確添加,更改,刪除行手動

。它顯示了某些對象的狀態,並且它們正在實時更改。我通過基於彗星的API接收狀態更改,這些更改要求我在表中添加/更改/刪除行。數據需要通過隱藏的「排序順序」列進行排序。這讓我更容易擁有靜態排序順序。

所以我沒有使用「數據」參數,我不「加載」任何數據,我一次添加一行。

我正在考慮做每一個插入,我可以在每次插入之後求助行,或者更好地遍歷表中的數據中的項目,直到我在最後或找到一個更大(通過此排序值)比我添加的。然後在該行之前添加新的。目前我加入他們都在第1行中,每個對象是這樣的:

jQuery("#mygrid").jqGrid('addRowData',1, obj); 

所以我看到他們,他們看起來很棒,但他們不按正確的順序呢。

刪除是(我認爲)很容易。我還沒有到那裏。

不過呢?數據的變化可能會包括「sortorder」值的變化,所以我希望在每次更改後都要求數據。我相信我可以將此隱藏列定義爲排序列,並且在數據更改時更改基礎數據。有沒有簡單的方法讓網格「重新排序」它的行?我嘗試了 $('#mygrid')。trigger(「reloadGrid」),但這並沒有採取任何措施...... 上面加載了「addRowData」調用的初始數據,但它沒有效果。數據保持不變...

我在正確的軌道上嗎?有沒有一個樣本在那裏編程添加行,更改行,刪除行,使用網格真的只是爲了顯示事物的當前排序狀態?

這裏是我創造的$(document)。就緒()我的網格定義

的HTML: <表ID = 'mygrid' > < /表>

  jQuery("#mygrid").jqGrid({ 
       datatype: "local", 
       loadonce: true, 
       scroll:1, 
       height: "auto", 
       width: '100%', 
       colNames:['A','B', 'C', 'D', 'SortKey'], 
       colModel:[ 
        {name:'a',index:'a'}, 
        {name:'b',index:'b'}, 
        {name:'c',index:'c'}, 
        {name:'d',index:'d'}, 
        {name:'sortordering',index:'sortordering', hidden:true} 
       ], 
       rowNum:200, 
       sortname: 'sortordering', 
       sortorder: 'asc', 
       shrinkToFit: true, 
       autowidth: true, 
       viewrecords: true, 
       multiselect: false, 
       imgpath: "lib/basic/images", 
       caption: "Testing 123" 
      }); 

網格用我添加的數據看起來很棒,我只需要對其進行排序並管理狀態更改...

感謝您的任何建議!

編輯#1:我一直在忙着嘗試和學習什麼是最好的。這裏是我所知道的:

1)$('#mygrid')。trigger(「reloadGrid」)不適用於「loadonce」/「local」數據。這是爲了從主機獲取/刷新數據,如果這就是你在做什麼。

2)我成功地採取任何改變後,唯一的方法是通過調用 jQuery(「#mygrid」)。jqGrid('sortGrid',「sortordering」,false);但是,我必須調用它兩次:-(因爲每次調用TOGGLES的方向(升序或降序),就像我單擊列一樣。無法在'sortGrid'調用中指定方向 - 應該是我的另一個參數意見...3)改變數據,我需要使用jQuery(「#mygrid」)。jqGrid('setRowData',...);並可能在此之後度假

4)刪除數據我需要使用jQuery(「#mygrid」)。jqGrid('delRowData',...);

我的下一個任務是找出正確的方式找到我想要改變,希望不通過所有這些迭代行的ROWID,但我會做,如果我有...

編輯#2: 我現在明白rowID的重要性,這有助於很多!正如我在這裏解釋的那樣,你可以指定一個列值作爲rowID值(它最好是唯一的!),這使得以後很容易引用該行......所以,當新的信息到達時,你需要編輯(setRowData)或刪除(delRowData),傳遞此列的值作爲setRowData或delRowData的rowID參數,然後傳遞整個對象(作爲新數據),並且您都已設置。如果你不想在網格中看到這個「關鍵」,只需將其隱藏即可。要指定這本專欄爲隱藏,併爲ROWID在colModel規範(變化的PrimaryKey對什麼屬性名稱是您的數據):

{name:'primarykey',index:'primarykey', key: true, hidden:true} 

順便說一句 - 首先,在我的例子,我昨天試着使用「sortordering」列作爲關鍵字,但它始終是唯一的,它可以隨着時間的推移而發生變化,所以它不會成爲key:true屬性的合適人選。

回答

0

看起來你將被設置:

$('#GridName').jqGrid().sortGrid('ColumnName',true); 

,如果你想改變該列的默認排序方向的列colModel你剛纔設置:

firstsortorder: 'desc', 
+0

我接受你的答案,因爲它肯定會回答如何排序,我在開始的時候出錯了。我昨晚想到了一個。今天我將再次編輯更多細節,我錯過了一切工作。 – 2013-03-08 15:12:03

0

試試這個,

變化sortname: 'sortordering',sortname: 'a',和插入$('#mygrid').trigger("reloadGrid")後重裝電網。因此,網格總是會在加載時和插入後在ASC中對A列數據進行排序

我不明白列排序的用途是什麼。

+0

其實,我想顯示列a,b,c,d,但這種「排序」是我指定一列的方式,當按此列排序時,行的順序是正確的。對於jqGrid,可能有更好的方法,例如使用自定義排序功能。但這就是我現在的做法...... – 2013-03-08 04:27:50

相關問題