jqGrid动态列

时间:2013-04-24 11:45:36

标签: jqgrid

我使用jqGrid v4.4.5,我想用动态列创建它。 它由“jqGridHandler.ashx”文件填充。 我想通过JSON发送所有信息(列名,数据......)。 我在Google上搜索它但找不到合适的答案。

通过单击每个节点(子)更改整个网格(操作和列...)。例如,通过单击node3,网格有三列'A'和'B'和'actions'但是通过单击node2网格有“C”,“D”和“动作”列。 enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

以下帖子在客户端有一些示例代码: jqGrid and dynamic column binding

答案 1 :(得分: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);