jqGrid 中的动态列

发布于 2024-09-13 04:41:31 字数 112 浏览 1 评论 0原文

我尝试让动态列与 jqGrid 一起使用,但取得了有限的成功。限制在于我可以从控制器控制列名称和格式。但是当我这样做时,我无法获取数据。

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

I've tried with limited success to get dynamic columns to work with jqGrid. Limited in that I can control the column names and formatting from the controller. But when I do this I can't get the data in.

Do you have a small sample solution that shows the controller code for the two calls.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ぶ宁プ宁ぶ 2024-09-20 04:41:31

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

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

           $("#grid").trigger("reloadGrid");

you can actually bind the column as normal but you can show/hide them at runtime using jquery. for example i have to show link column in jqgrid for admin user and for normal users that column needs to be hidden so implement this in following way.

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

           $("#grid").trigger("reloadGrid");
孤者何惧 2024-09-20 04:41:31
JQGrid1.Columns.FromDataField(ColumnName).Visible = false;
JQGrid1.Columns.FromDataField(ColumnName).HeaderText = "Sample";
JQGrid1.Columns.FromDataField(ColumnName).Visible = false;
JQGrid1.Columns.FromDataField(ColumnName).HeaderText = "Sample";
通知家属抬走 2024-09-20 04:41:31
JQGrid(action, caption, 920, 400, loadtext);

function columnsData(Data) {

var str = "[";
for (var i = 0; i < Data.length; i++) {
    str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', editable: true}";
    if (i != Data.length - 1) {
        str = str + ",";
    }
}
str = str + "]";
return str;
}

function JQGrid(action, caption, width, height, loadtext) {

var grid = $("#tblGrid");
var lastsel;
var editurl = '/PayInvoice/GridSave';
$.ajax({
    url: action,
    dataType: "json",
    mtype: 'POST',
    beforeSend: function () {
        $("#dvloading").show();
    },
    success: function (result) {
        if (result) {
            if (!result.Error) {
                var colData = columnsData(result.column);
                colData = eval('{' + colData + '}');
                grid.jqGrid('GridUnload');
                grid.jqGrid({
                    url: action,
                    datatype: 'json',
                    mtype: 'POST',
                    colModel: colData,
                    colNames: result.column,
                    // multiselect: true,
                    width: width,
                    height: height,
                    rowNum: 20,
                    rowList: [20, 40, 60],
                    loadtext: loadtext,
                    pager: '#tblGridpager',
                    sortorder: "asc",
                    viewrecords: true,
                    gridview: true,
                    altRows: true,
                    cellEdit: true,
                    cellsubmit: "remote",
                    cellurl: '/PayInvoice/GridSavecell',
                    beforeSubmitCell: function (id, cellname, value, iRow, iCol) {
                        objedit(id, cellname, value);
                        return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol };
                    },
                    afterSaveCell: function (id, cellname, value, iRow, iCol) {
                        objedit(id, cellname, value);
                        return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol };
                    },
                    caption: caption
                });
            }
        }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        if (xhr && thrownError) {
            alert('Status: ' + xhr.status + ' Error: ' + thrownError);
        }
    }, complete: function () {
        $("#dvloading").hide();
    }
});

}

function objedit(id, cellname, value) {

var flag = 0;
for (var i = 0; i < index; i++) {
    if (obj[i][0] == id && obj[i][1] == cellname) {
        obj[i] = [id, cellname, value]
        flag++;
    }
}
if (flag == 0) {
    obj[index] = [id, cellname, value];
    index++;
}

}
JQGrid(action, caption, 920, 400, loadtext);

function columnsData(Data) {

var str = "[";
for (var i = 0; i < Data.length; i++) {
    str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', editable: true}";
    if (i != Data.length - 1) {
        str = str + ",";
    }
}
str = str + "]";
return str;
}

function JQGrid(action, caption, width, height, loadtext) {

var grid = $("#tblGrid");
var lastsel;
var editurl = '/PayInvoice/GridSave';
$.ajax({
    url: action,
    dataType: "json",
    mtype: 'POST',
    beforeSend: function () {
        $("#dvloading").show();
    },
    success: function (result) {
        if (result) {
            if (!result.Error) {
                var colData = columnsData(result.column);
                colData = eval('{' + colData + '}');
                grid.jqGrid('GridUnload');
                grid.jqGrid({
                    url: action,
                    datatype: 'json',
                    mtype: 'POST',
                    colModel: colData,
                    colNames: result.column,
                    // multiselect: true,
                    width: width,
                    height: height,
                    rowNum: 20,
                    rowList: [20, 40, 60],
                    loadtext: loadtext,
                    pager: '#tblGridpager',
                    sortorder: "asc",
                    viewrecords: true,
                    gridview: true,
                    altRows: true,
                    cellEdit: true,
                    cellsubmit: "remote",
                    cellurl: '/PayInvoice/GridSavecell',
                    beforeSubmitCell: function (id, cellname, value, iRow, iCol) {
                        objedit(id, cellname, value);
                        return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol };
                    },
                    afterSaveCell: function (id, cellname, value, iRow, iCol) {
                        objedit(id, cellname, value);
                        return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol };
                    },
                    caption: caption
                });
            }
        }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        if (xhr && thrownError) {
            alert('Status: ' + xhr.status + ' Error: ' + thrownError);
        }
    }, complete: function () {
        $("#dvloading").hide();
    }
});

}

function objedit(id, cellname, value) {

var flag = 0;
for (var i = 0; i < index; i++) {
    if (obj[i][0] == id && obj[i][1] == cellname) {
        obj[i] = [id, cellname, value]
        flag++;
    }
}
if (flag == 0) {
    obj[index] = [id, cellname, value];
    index++;
}

}
茶底世界 2024-09-20 04:41:31

开始了;

 $("#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;
    }

Here we go;

 $("#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;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文