jqGrid 动态设置 colModels 和 colNames

jqGrid setting colModels and colNames dynamically

本文关键字:colNames colModels 设置 动态 jqGrid      更新时间:2023-09-26

如果要设置,真的有必要卸载$("#myGrid").jqGrid('GridUnload');吗又是它的colModelscolNames?或者我应该说这是实施的唯一方法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

对这种方法有什么想法吗?提前致谢

jqGrid 在创建网格期间创建一些列结构。例如,如果一个人创建了一次网格,则无法更改列数。另一方面,您可以隐藏一些不需要的列。colModel的设置不会更改列标题。另一方面,您可以使用setLabel方法动态更改列标题。colModel的最多值可以是更改。主要限制是:列数应相同。另一个限制:不应更改列name属性的值,因为该属性将用于生成列标题的 ID。如果使用repeatitems: false样式的数据类型,则可以动态设置jsonmapxmlmap属性不变name列的属性。按setGridParam更改width属性不会更改现有列的宽度。另一方面,您可以使用我在答案中建议setColWidth方法,您可以从此处下载。因此,您可以创建具有足够多列的网格,并将其他列设置为隐藏。

答案提供了您提出的90%的解决方案。我在beforeProcessing内部修改colModel.其他答案包含您需要的解决方案的简短描述。