如果要设置,是否真的有必要卸载$("#myGrid").jqGrid('GridUnload');
又是colModels
和colNames
?或者我应该说它是唯一的实施方式
jqGrid的动态列?虽然我已经尝试了那个并且它有效。
但是我也尝试了jqGrid的setGridParam
,但是当我输入colModels / colNames时它不会工作。
这是我在卸货时所做的事情
$.ajax({
url : url, //url the returns formatted colModels/colNames and other data
data : data,
async : false,
success : function(data){
$("#myGrid").setGridParam({
url : "xx/xxx/xx.json",
page : 1,
postData : {
.
.
.
},
colNames : data.returnedColNames,
colModel : data.returnedColModels,
rowNum : 50,
pager: '#myGridPager',
}).trigger("reloadGrid");
}
});
但我得到的错误就像Uncaught TypeError: Cannot read property 'formatter' of undefined
关于这种方法的任何想法? 提前致谢
答案 0 :(得分:2)
jqGrid在创建网格期间创建一些列结构。例如,如果一个人创建了网格,则无法更改列数。另一方面,您可以隐藏一些不需要的列。设置colModel
不会更改列标题。另一方面,您可以使用setLabel
方法动态更改列标题。 colModel
的最大值可以是更改。主要限制是:列数应该相同。另一个限制:您不应更改列的name
属性的值,因为该属性将用于生成列标题的ID。如果您使用repeatitems: false
数据样式,则可以动态设置保留jsonmap
属性不变的列的xmlmap
或name
属性。按width
更改setGridParam
属性不会更改现有列的宽度。另一方面,您可以使用我在the answer中建议的setColWidth
方法以及可以从here下载的方法。因此,您可以创建具有足够数量列的网格,并将其他列设置为隐藏。
The answer提供了90%的解决方案。我修改了colModel
内的beforeProcessing
。 Other answer包含您需要的解决方案的简短描述。