用户如何在jqgrid中切换行号

时间:2012-03-17 20:48:26

标签: javascript jqgrid

使用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还包含multiselect和_actions列。在loadcomplete中,使用

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

如果在加载后第一次打开行号,则添加行中的多选列复选框将显示在rown numbers列中:

checkbox in row number column

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

之后,您可以根据需要使用最初的按钮$("#RowNumbers")。您可以考虑将rownumbers选项设置为truefalse以及showColhideCol并使用rownumbers选项代替您{ {1}}变量。

更新rownumbers的当前代码只是测试jqGrid的addRowData选项是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

相关问题