【问题标题】:How user can to toggle row numbers in jqgrid用户如何在 jqgrid 中切换行号
【发布时间】:2012-04-02 23:01:26
【问题描述】:

使用来自Set rownumbers to false dynamically in jqgrid 的答案,我创建了行号切换按钮。 最初没有显示行号。忽略按钮单击,不添加行号列。 如何强制按钮添加行号列? 或者是否可以向列选择器添加选项以切换行号列?这样会更好,不需要额外的按钮。

 var rownumbers=  isColState ? myColumnsState.rownumbers : false;
 $("#grid_toppager_left table.navtable tbody tr").append(
        '<td class="ui-pg-button ui-corner-all">' +
            '<div class="ui-pg-div my-nav-checkbox">' +
            '<input tabindex="-1" type="checkbox" id="RowNumbers" ' + (rownumbers ? 'checked ' : '')+'/>' +
            '<label title="Toggle row numbers"' +
            ' for="RowNumbers">Toggle row numbers</label></div></td>'
    );
 $("#RowNumbers").button({
        text: false,
        icons: {primary: "ui-icon-grip-dotted-vertical"}
    }).click(function () {
        rownumbers = !rownumbers;
        if (rownumbers ) {
          $grid.jqGrid('showCol', 'rn'); 
         } else { 
          $grid.jqGrid('hideCol', 'rn'); 
          }
       saveWindowState();
    });

更新

jqgrid 还包含多选和 _actions 列。在 loadcomplete 中,使用

将新行添加到网格的末尾
var newRowData = { Dokumnr: 123,
    Reanr: $grid[0].rows.length + 1
},
newRowId = '_empty' + $.jgrid.randId();
$grid.jqGrid('addRowData', newRowId, newRowData);

如果加载后第一次打开行号,则添加行中的多选列复选框出现在行号列中:

如何解决这个问题?

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    您必须以任何方式包含rownumbers: true 才能创建行号。如果您希望最初不显示行号,则应在创建网格后调用$grid.jqGrid('hideCol', 'rn');。对于$grid.jqGrid('setGridParam', {rownumbers: false});,您还可以将rownumbers 设置为false,但我认为这不是必需的。

    之后,您可以像最初想要的那样使用按钮$("#RowNumbers")。也许您可以考虑将rownumbers 选项设置为truefalse 以及showColhideCol,并使用rownumbers 选项而不是rownumbers 变量。

    更新addRowData的当前代码只是测试jqGrid的rownumbers选项是否为true

    var ni = t.p.rownumbers===true ? 1 :0;
        gi = t.p.multiselect ===true ? 1 :0;
        si = t.p.subGrid===true ? 1 :0;
    

    取决于它计算数据位置的值:

    prp = t.formatCol(ni,1,'', null, rowid, true);
    

    所以我应该更正我的答案。您不应更改 rownumbers 选项的值。即使相应的列将被隐藏,它也应该始终保持true

    【讨论】:

    • 谢谢。优秀的建议。我实现了它们,但是如果在第一次打开行号时,添加行中的多选复选框会出现在行号列中。如何解决这个问题?我更新了问题
    • @Andrus:看来要解决这个问题,您不应该更改 jqGrid 的 rownumbers 选项。它应该始终保持true
    • 谢谢。如何为切换和网格状态保存找到行号的当前状态?我应该检查 rownumbers 列是否处于隐藏状态?如果是,如何检查?
    • @Andrus:我发现检查colModel 中'rn' 列的hidden 属性是最直接、最清晰的方法。您可以使用getColumnIndexByName 获取列索引或仅获取colModel 的第一列。
    • 谢谢。我使用了` if ($grid.jqGrid('getGridParam', 'rownumbers') && $grid[0].p.colModel[0].hidden ) { $grid.jqGrid('showCol', 'rn'); } else { $grid.jqGrid('hideCol', 'rn'); } ` 这是最好的解决方案吗?
    猜你喜欢
    • 2014-11-07
    • 2014-03-19
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多