今天开发的过程中遇到一个问题:jqgrid 第一次初始化完成后,有个操作需要重新去加载grid,并将某一列的显示改变。因为grid第一次加载的时候这一列是直接显示其值的,并没有去formatter它的显示,后面的操作需要为这一列formatter显示方式,所以怎么去动态的添加这一列的formatter配置就成了问题。
贴上自己的代码:
第一次初始化
init:function(criteria){ jQuery("#container").jqGrid(jQuery.extend(true,defaultOptions,{ url: contextPath + "count/listing.do?"+new Date().getTime(), postData: {criteria:criteria}, colName:['短信账号','短信密码','短信条数'], colModel:[{ name: 'dxzh',index: 'dxzh',width: 100 },{ name: 'dxmm',index: 'dxmm',width: 100 },{ name: 'dxts',index, 'dxts',width: 100 }], pager: 's4pager', caption: '短信统计' })); }
重新请求,并为短信条数增加formatter属性
jQuery("#container").GridUnload(); jQuery("#container").jqGrid(jQuery.extend(true,defaultOptions,{ colModel:[{ name: 'dxzh',index: 'dxzh',width: 100 },{ name: 'dxmm',index: 'dxmm',width: 100 },{ name: 'dxts',index, 'dxts',width: 100,formatter: dxtsFormatter }], pager: 's4pager', caption: '短信统计' })); jQuery('#container').trigger('reloadGrid');打完收工。
这篇博文里面比较系统的解释了jqgrid的各种方法。
count: function(){ jQuery("#container").setPostDateItem('criteria',newCriteria); jQuery("#container").setColProp('dxts',{index, 'dxts',width: 100,formatter: dxtsFormatter}); jQuery("#container").trigger('reloadGrid'); }
搞定。