早上好,我正在研究一个有多重选择的jqGrid。
我需要仅使用multisel框来限制行的选择,而不是通过单击行的任何位置来限制行的选择。 多数民众赞成是因为我需要通过单击某些单元格上的链接来执行某些操作,我不会更改活动的多选。 我试图设置multiboxonly属性,但这不是我需要的。 我没有找到任何其他东西来定制网格的这个功能。
答案 0 :(得分:14)
您可以根据自定义beforeSelectRow事件处理程序控制选择行的行。如果处理程序返回true,则将选择该行。如果返回false,则不会选择该行。
beforeSelectRow
的第二个参数是event object,e.target是点击的DOM元素。您可以使用<td>
获取单击完成的单元格($(e.target).closest('td')
)。然后,您可以使用$.jgrid.getCellIndex来获取行的单元格的索引。 colModel
中的索引应指向包含复选框的“cb”列。所以代码可能如下:
beforeSelectRow: function (rowid, e) {
var $myGrid = $(this),
i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
cm = $myGrid.jqGrid('getGridParam', 'colModel');
return (cm[i].name === 'cb');
}
相应的演示,您可以看到here。
答案 1 :(得分:4)
我想建议更简单的解决方案:
beforeSelectRow: function(rowid, e) {
return $(e.target).is('input[type=checkbox]');
},
答案 2 :(得分:3)
当multiselect设置为true时,单击行上的任意位置将选择该行;当multiboxonly也设置为true时,仅在单击复选框时才会执行多选。 所以答案是:
multiboxonly: true