JQgrid:点击JQgrid表头时是否有任何事件触发?

3
在我的.NET应用程序中,我正在使用Jqgrid生成报告。对于一些报告,我需要显示多个网格,也就是说,此时只能展开一个网格。
为了做到这一点,我需要知道是否有任何网格标题点击事件可用。
我已经检查了这个事件,我只能看到“onHeaderClick”事件可用。 onHeaderClick事件只会在我们单击每个网格标题右上角的展开或折叠图标时触发。
任何帮助都将受到赞赏。

如果没有标准支持,您可以使用on附加委托事件。 - user2864740
谢谢您的回复。您能否再明确一些? - Cyber
2个回答

2
您可以手动绑定click事件处理程序到标题:
var $grid = $("#grid"); // your grid

$($grid[0].grid.cDiv).click(function() {
    // $mygrid will be the same as $grid, but we can use the expression below
    // to be able to use one even handle for multiple grids
    var $mygrid = $(this).closest(".ui-jqgrid-view")
                      .find(">.ui-jqgrid-bdiv>div>.ui-jqgrid-btable"),
        gridstate = $mygrid.jqGrid("getGridParam", "gridstate");
    alert("the header is clicked!\n" +
          "gridstate is now \"" + gridstate + "\"");
});

$grid.bind("jqGridHeaderClick", function (e, gridstate) {
    alert("the icon in the header is clicked!\n" +
          "gridstate is now \"" + gridstate + "\"");
});

如果需要,您可以模拟在标题栏上“点击”图标,就像演示所示。

我在这个事件中遇到了问题。最初我有三个网格,如果我单击任何一个网格标题,所有子网格都将被卸载。在这种情况下,如果我单击第一个网格标题,所有子网格都会被卸载,但是如果我再次创建所有三个网格并尝试单击第二个网格标题,则无法正常工作。这意味着在卸载网格后,这些事件不起作用。有什么建议吗? - Cyber
@Cyber:你所说的“卸载”是什么意思?如果你重新创建网格,则必须在每次创建基本<table>元素后重新绑定事件。 - Oleg
感谢您的回复。Grid Unloading 意味着 $('#mygrid').jqGrid('GridUnload');。如何在重新创建网格后重新绑定事件。 - Cyber
1
@Cyber:执行$('#mygrid').jqGrid('GridUnload')后,整个表格(包括所有绑定)将被销毁。在同一个位置将创建空的<table id="mygrid"></table>。所以你应该创建 新的 表格,然后再执行我发布的代码($($grid[0].grid.cDiv).click$grid.bind("jqGridHeaderClick",...))。这就是我在重新创建网格和重新绑定下面的评论中所指的。 - Oleg
我在重新创建网格后执行了代码。它正在工作。感谢您的帮助。 - Cyber
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接