jqGrid中的动态列

jqGrid中的动态列,jqgrid,jqgrid-asp.net,Jqgrid,Jqgrid Asp.net,我尝试让动态列与jqGrid一起工作,但收效甚微。限制在于我可以从控制器控制列名和格式。但是当我这样做的时候,我无法获取数据 您是否有一个显示两个调用的控制器代码的小示例解决方案。您实际上可以像正常情况一样绑定列,但可以在运行时使用jquery显示/隐藏它们。例如,我必须在jqgrid中为管理员用户和普通用户显示链接列,该列需要隐藏,所以按照以下方式实现 $("#grid").showCol("Link"); $("#grid").hideCol(

我尝试让动态列与jqGrid一起工作,但收效甚微。限制在于我可以从控制器控制列名和格式。但是当我这样做的时候,我无法获取数据


您是否有一个显示两个调用的控制器代码的小示例解决方案。

您实际上可以像正常情况一样绑定列,但可以在运行时使用jquery显示/隐藏它们。例如,我必须在jqgrid中为管理员用户和普通用户显示链接列,该列需要隐藏,所以按照以下方式实现

            $("#grid").showCol("Link");
            $("#grid").hideCol("Link");

           $("#grid").trigger("reloadGrid");
我们走吧

 $("#datagrid").jqGrid({
        //url: "user.json",
        //datatype: "json",
        datatype: "local",
        data: dataArray,
        colNames:getColNames(dataArray[0]),
        colModel:getColModels(dataArray[0]),
        rowNum:100,
        loadonce: true,
        pager: '#navGrid',
        sortname: 'SongId',
        sortorder: "asc",
        height: "auto", //210,
        width:"auto",
        viewrecords: true,
        caption:"JQ GRID"
    });

    function getColNames(data) {
        var keys = [];
        for(var key in data) {
            if (data.hasOwnProperty(key)) {
                keys.push(key);
            }
        }

        return keys;
    }

    function  getColModels(data) {
        var colNames= getColNames(data);
        var colModelsArray = [];
        for (var i = 0; i < colNames.length; i++) {
            var str;
            if (i === 0) {
                str = {
                    name: colNames[i],
                    index:colNames[i],
                    key:true,
                    editable:true
                };
            } else {
                str = {
                    name: colNames[i],
                    index:colNames[i],
                    editable:true
                };
            }
            colModelsArray.push(str);
        }

        return colModelsArray;
    }
JQGrid1.Columns.FromDataField(ColumnName).Visible = false;
JQGrid1.Columns.FromDataField(ColumnName).HeaderText = "Sample";
 $("#datagrid").jqGrid({
        //url: "user.json",
        //datatype: "json",
        datatype: "local",
        data: dataArray,
        colNames:getColNames(dataArray[0]),
        colModel:getColModels(dataArray[0]),
        rowNum:100,
        loadonce: true,
        pager: '#navGrid',
        sortname: 'SongId',
        sortorder: "asc",
        height: "auto", //210,
        width:"auto",
        viewrecords: true,
        caption:"JQ GRID"
    });

    function getColNames(data) {
        var keys = [];
        for(var key in data) {
            if (data.hasOwnProperty(key)) {
                keys.push(key);
            }
        }

        return keys;
    }

    function  getColModels(data) {
        var colNames= getColNames(data);
        var colModelsArray = [];
        for (var i = 0; i < colNames.length; i++) {
            var str;
            if (i === 0) {
                str = {
                    name: colNames[i],
                    index:colNames[i],
                    key:true,
                    editable:true
                };
            } else {
                str = {
                    name: colNames[i],
                    index:colNames[i],
                    editable:true
                };
            }
            colModelsArray.push(str);
        }

        return colModelsArray;
    }