2013-04-24 61 views
0

我使用jqGrid v4.4.5,我想用动态列创建它。 它由“jqGridHandler.ashx”文件填充。 我想通过JSON发送所有信息(列名,数据...)。 我在谷歌搜索它,但找不到一个很好的答案。通过点击每个节点(子)更改整个网格(动作和列......)。例如,通过点击节点3,网格有三列'A'和'B'和'动作',但通过点击node2网格有列'C'和'D'和'动作'。 enter image description herejqGrid动态列

回答

1

一个可以使用的jqGrid创造出许多不同的网格,网格树,子网格等。了解是否要显示10行或100000行的网格非常重要。如果您有100000行(或其他大量的行),则必须实施服务器端分页和数据排序。因此,如果用户点击“下一页”按钮,则应该从服务器加载下一行。为什么你需要发送所有colModel分页或排序数据?所以你应该清楚的知道,在服务器端的情况下,一个需要创建所有的网格结构只有一次然后一个只需刷新网格的主体。因此,发送所有信息(列名,列模型,数据,......一次)是不好的选择。

只有当你有几百或网格中的行的几千,你可以用loadonce: true选择他们,你可以加载一次所有信息中的每个单独的jQuery(列名,列模型,数据,...)。 ajax调用,然后使用datatype: "local"创建jqGrid,并使用包含所有网格数据的参数data

修订:如果您需要更改

// in the example below the grid with id="list" will be created 
// with column having name: "c4" in colModel 
var $grid = $("#list"), columnName = "c4"; 

... 

var $colHeader = $("#jqgh_" + $.jgrid.jqID($grid[0].id) + "_" + $.jgrid.jqID(columnName)), 
    $sortingIcons = $colHeader.find(">span.s-ico"); 

// change the text displayed in the column 
$taxHeader.text("New header text"); 

// append sorting icons to the new text 
$taxHeader.append($sortingIcons); 
+0

感谢Oleg.I要显示10行100000列格(不树网格),并使用分页。当客户端点击treeview的节点,然后更改网格结构(colName,Actions,....)。解决方案是什么? – ZSH 2013-04-27 05:53:26

+0

@ZSH:您可以使用[子网格作为网格](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid_as_grid)来显示这些数据。 – Oleg 2013-04-27 09:03:09

+0

我不需要使用子网格(父和子)。我只是想能够在jqgrid中更改动态colName,ColModel。 – ZSH 2013-04-27 10:40:07

1

在初始化jqGrid之前,您需要获得jqGrid的colNames和colModel属性的信息。

简而言之,您将从服务器请求信息,一旦您成功检索到该信息,您就可以构建jqGrid,然后jqGrid可以去取数据。

以下后对客户端的一些示例代码: jqGrid and dynamic column binding