我喜欢jqGrid,但有时事情似乎比它们应该更复杂.
我想要实现的是在每一行上都有一个复选框,以便用户可以选择要提交/处理的行.
但是,我需要阻止一些复选框,因为用户可能没有授权该特定行.
我试图设置multiselect: true,然后我试图隐藏复选框:
loadComplete: function (data) {
if (data.rows.length > 0) {
for (var i = 0; i < data.rows.length; i++) {
if (data.rows[i].cell[7] == 'false') {
$("#jqg_OrdersGrid_" + data.rows[i].id).css("visibility", "hidden");
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
它运作良好,但仍然.jqGrid('getGridParam', 'selarrrow')给我选定的行,即使它们没有被检查过.
有没有其他方法可以启用/禁用复选框,以及如何知道已检查哪些复选框?
谢谢
检查jqGrid中页面的复选框会清除所选的复选框.因此,如果我检查第1页上的某些复选框,然后单击"下一步"转到第2页,然后返回到第1页,则不再选中所选复选框.
有没有办法在jqgrid中在客户端处理这个?
我有一个带有loadonce的JQGrid:true(所以它是所有客户端)和启用分页(有20页).
我想指定一行(以编程方式,没有用户输入)并让我的网格导航到相应的页面以选择指定的行.
这可能与当前的JQGrid有关吗?
我已经研究过搜索和过滤,但只是用新行重新加载网格 - 我需要我的网格导航到正确的页面 - 保持其数据和结构.
我正在优化我的网格结构,因此所需的任何更改(例如客户端到服务器端)都是可能的.
如果再次打开网格或刷新页面,如何预先确定当前行?
持久化jqGrid列首选项中的答案描述了如何保持列宽和其他一些参数.
在这个答案演示中,我点击了一行并按了F5.之前单击的行未突出显示.如何在本地存储中保存/恢复当前行?
更新
如果在应用程序中修改了jqGrid列结构,并且用户再次从浏览器打开应用程序,则restorecolumnstate会创建无效的colmodel,其中缺少某些元素.这会导致refreshSearchingToolbar中出现异常,该异常假定存在所有colmodel元素.
如何解决这个问题?在这种情况下如何设计修改后的colmodol而不是恢复colmodel?或者应该restoreColumnState更新colModel以便创建正确的数组?
**更新2**
如果myColumnsState.permutation包含空值,则$grid.jqGrid("remapColumns", myColumnsState.permutation, true)创建无效的colmodel.以下是在remapColumns调用之前和之后立即从VS调试器截取的屏幕截图
后:

我通过chaning代码来解决这个问题
if (isColState && myColumnsState.permutation.length > 0) {
var i, isnull = false;
for (i = 0; i < myColumnsState.permutation.length; i = i + 1) {
if (myColumnsState.permutation[i] == null) {
isnull = true;
break;
}
}
if (!isnull) {
$grid.jqGrid("remapColumns", myColumnsState.permutation, true);
}
Run Code Online (Sandbox Code Playgroud)
这是最佳解决方案吗?