jqGrid不支持单选,本来也想借鉴网上的做法,通过对checkbox的处理来间接实现。但在实践中却发现设置了multiSelect后,checkbox并没有显示出来,怀疑是跟页面的其它前端框架如bootstrap有冲突,索性换个思路来实现:
在一列自行添加radio按钮,这列就起名为“操作”吧,代码如下:
colModel: [
{
name: 'ID', label: 'ID', index: 'ID', width: 80, align: 'left', hidden: true, sortable: false
}
, {
name: 'operate', label: '操作', width: 200, formatter: function (cellvalue, options, rowObject) {
return "<input type='radio' name='rdSelect' style='width:100px' > <a href='#' οnclick=addGroup()>新增</a> <a href='#' οnclick=delGroup()>删除</a>"
}
}
],
....
那么如果判断哪行是选中呢?比如要删除一行时,可以用下面的方法:
function delGroup() {
var rowDatas = jQuery("#Jqgrid_Group").jqGrid("getRowData");
var arrRadios = document.getElementsByName("rdSelect");
for (var i = 0; i < rowDatas.length; i++) {
if (arrRadios[i].checked) {
_rowData = rowDatas[i];
}
}
if (typeof (_rowData) == "undefined") {
alert("请选择要删除的整行");
return;
}
然后就可以从_rowData中获取你需要的任何列的值了,这样看上去是不是比checkbox效果更好呢?