jqGrid动态设置colModels和colNames

时间:2014-04-10 16:31:59

标签: javascript jqgrid

如果要设置,是否真的有必要卸载$("#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

一样

关于这种方法的任何想法? 提前致谢

1 个答案:

答案 0 :(得分:2)

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

The answer提供了90%的解决方案。我修改了colModel内的beforeProcessingOther answer包含您需要的解决方案的简短描述。