我有一个加载一次 jqgrid,它使用自定义格式化程序来显示 bool 值的复选框,这些值仅在单击保存按钮时保留。但是,每当单击排序时,所有复选框的选中状态都不会保留。
jQuery("#list2").jqGrid({
url:myurl,
datatype: "json",
loadonce: true,
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:55},
{name:'isChecked',index:'isChecked', width:90, formatter:chkFmatter},
{name:'name',index:'name asc, invdate', width:100},
{name:'amount',index:'amount', width:80, align:"right"},
{name:'tax',index:'tax', width:80, align:"right"},
{name:'total',index:'total', width:80,align:"right"},
{name:'note',index:'note', width:150, sortable:false}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager2',
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption:"JSON Example"
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});
function chkFmatter(cellvalue, options, rowObject) {
// do something here to format column
return new_format_value
}
无论如何,我可以保留排序、分页等时单击的复选框吗?
最佳答案
这是因为绑定(bind)到网格的数据没有被更新,所以任何新的请求(分页、排序等)都将反射(reflect)该属性绑定(bind)到的原始状态。您最好的选择是在复选框状态发生变化时更新实际数据以反射(reflect)这一点。
您可以使用getGridParam检索绑定(bind)到网格的数据。 :
var data = $('#' + gridid).jqGrid('getGridParam', 'data');
然后要更新它,请使用您的 rowid、列名称和值来更新数据对象:
data[row - 1][columnname] = value;
关于jqgrid - jqGrid 排序时保持自定义格式列中复选框的选中状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11102440/