2011-11-04 55 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