我使用 jqGrid v4.4.5,我想用动态列创建它。它由“jqGridHandler.ashx”文件填充。我想通过 JSON 发送所有信息(列名,数据,...)。我在谷歌搜索它,但找不到一个好的答案。
通过单击每个节点(子)更改整个网格(操作和列...)。例如,通过单击节点 3,网格具有三列“A”和“B”以及“操作”,但通过单击节点 2 网格具有列“C”、“D”和“动作”。
我使用 jqGrid v4.4.5,我想用动态列创建它。它由“jqGridHandler.ashx”文件填充。我想通过 JSON 发送所有信息(列名,数据,...)。我在谷歌搜索它,但找不到一个好的答案。
通过单击每个节点(子)更改整个网格(操作和列...)。例如,通过单击节点 3,网格具有三列“A”和“B”以及“操作”,但通过单击节点 2 网格具有列“C”、“D”和“动作”。
在初始化 jqGrid 之前,您需要了解 jqGrid 的 colNames 和 colModel 属性的信息。
所以简而言之,您将从您的服务器请求信息,一旦您成功检索到该信息,您就可以构建 jqGrid,然后 jqGrid 可以去获取它的数据。
以下帖子在客户端有一些示例代码: jqGrid and dynamic column binding
可以使用 jqGrid 创建许多不同的网格、树形网格、子网格等。了解您是要显示 10 行还是 100000 行的网格非常重要。如果您有 100000 行(或其他一些大量行),则必须实现服务器端分页和数据排序。因此,如果用户单击“下一页”按钮,则应从服务器加载下一行。为什么需要colModel
在分页或排序时发送所有数据?因此,您应该清楚地了解,在服务器端场景中,只需要创建一次网格的所有结构,然后只需要刷新网格的主体。因此,一次发送所有信息(列名、列模型、数据……)将是一个糟糕的选择。
只有当您在网格中有数百或数千行并且您可以使用loadonce: true
选项时,您才能在每个单独的 jQuery.ajax 调用中加载所有信息(列名、列模型、数据......),然后使用创建 jqGriddatatype: "local"
并使用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);