2011-11-04 54 views
0

我使用jqgrid的tableToGrid方法從現有的html表中生成網格。我的表格定義如下:在哪裏指定服務器ID使用jqgrid/tabletogrid

<table id="myTable"> 
     <thead> 
     <tr> 
      <th>My Title</th> 
     </tr> 
     </thead> 
     <tbody> 
      <tr id="321"><td>Item 321</td></tr> 
      <tr id="111"><td>Item 111</td></tr> 
      <tr id="495"><td>Item 495</td></tr> 
      ... 
     </tbody> 
    </table> 

這些ID都來自數據庫,我將需要它們執行更新。當我調用tableToGrid時,它似乎覆蓋了我自己的所有ID,它們從1開始算到表中的行數。如果onSelectRow方法通過了實際的服務器ID,但是不可能,那麼將會很好,在桌面上存儲服務器ID的最佳方式是什麼,不顯示它並且仍然可以訪問它以進行更新等。

我tableToGrid通話是這樣的:

tableToGrid("#myTable", { width:230, height: 500, onSelectRow: onSelectMethod, colModel: [{ name: 'MyTitle', index: 'MyTitle', sortable: false}] });

感謝。

+0

當你提到'服務器ID',你的意思是「在服務器上生成的HTML元素的ID? –

+0

如何將它分配給名稱屬性,而不是ID元素? – kamaci

回答

1

我個人更喜歡直接創建jqGrid,而不是使用tableToGrid。在這種情況下,你將沒有描述的問題。

如果您確實喜歡使用tableToGrid我建議您使用以下技巧。 tableToGridThe current code可以獲得rowid,但它不會從id屬性獲得<tr>。而不是它使用來自表格第一列的單選按鈕的value屬性。你的例子會很清楚。您可以通過修改原始表以下

<table id="myTable"> 
    <thead> 
    <tr> 
     <th></th><th id="MyTitle">My Title</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr id="321"><td><input type="radio" name="sel" value="321"/></td><td>Item 321</td></tr> 
    <tr id="111"><td><input type="radio" name="sel" value="111"/></td><td>Item 111</td></tr> 
    <tr id="495"><td><input type="radio" name="sel" value="495"/></td><td>Item 495</td></tr> 
    </tbody> 
</table> 

在這個例子中的單選按鈕的value屬性從第一欄應包含ROWID。 JavaScript代碼可以是

tableToGrid("#myTable", { 
    width: 230, 
    height: 'auto', 
    onSelectRow: function (id) { 
     alert(id); 
    }, 
    colNames: ['My Title'], 
    colModel: [ 
     { name: 'MyTitle', index: 'MyTitle', sortable: false} 
    ] 
}); 

The demo現在可以像您一樣按需工作。

使用帶單選按鈕的附加列可能看起來不需要。我個人不喜歡這種方式。如果您檢查the codetableToGrid,您會發現它並不複雜。您可以對其進行修改,使其不會從單選按鈕中獲取rowid,而是從id<tr>轉而獲得rowid。

+0

謝謝,我最終修改了jqrid ,只是爲了處理ID而添加一列單選按鈕似乎是錯誤的。 – zaq

+0

@zaq:不客氣! – Oleg