【问题标题】:Collapse all rows when expanding another row using jqGrid subgrid使用 jqGrid 子网格扩展另一行时折叠所有行
【发布时间】:2026-02-08 12:10:02
【问题描述】:

高科技大师,

如何在 jqGrid 中只扩展一行?

即当我单击子网格以展开一行时,所有当前展开的列都应折叠。我在子网格创建中添加了“expandOnLoad:false”属性。但不工作。

请给出正确的解决方案。

谢谢, 森提尔B

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    expandOnLoad 的文档指出:

    expandOnLoad 设置为 true 时,将在加载一组新数据时自动扩展所有行。

    这并没有说明在展开另一行时折叠其他行(列?)。


    但要回答您的问题 - here 是 Tony 使用 collapseSubGridRow 的编程解决方案:

    function(rowid, selected)
    {
      var rowIds = $("#grid").getDataIDs();
       $.each(rowIds, function (index, rowId) {
               $("#grid").collapseSubGridRow(rowId); 
       });
    }
    

    您需要在 subGridBeforeExpand 事件上调用它。

    【讨论】:

      【解决方案2】:

      它会在行点击时展开子网格:

      onSelectRow: function (pRowId) {
                      $(outterGrid).jqGrid('toggleSubGridRow', pRowId);
                      var rowIds = $(outterGrid).getDataIDs();
                      $.each(rowIds, function (index, rowId) {
                          if (pRowId != rowId) {
                              $(outterGrid).collapseSubGridRow(rowId);
                          }
                      });
                  }
      

      ,其中 outterGrid 是您正在单击的网格

      【讨论】:

        最近更新 更多