Jquery jqGrid与动态colModel?

Jquery jqGrid与动态colModel?,jquery,jqgrid,Jquery,Jqgrid,我必须创建一个数据表 最重要的特点是: 可以动态添加/删除行(完成) 可以动态添加/删除列(我如何才能做到这一点?) 更改后的模型可以保存在数据库中,以便修改特征 这可能吗 问题是,您无法动态更改jQgrid模型。我看到的两个选择是: 使用GridUnload删除整个网格并使用新的ColModel(如果可以完全更改)重新加载它: jQuery(选择器).GridUnload(选择器) 加载所有可能的行并显示/隐藏所需的行,例如使用 为了动态保存,将网格的配置数据作为JSON存储在数据库中就足够了

我必须创建一个数据表

最重要的特点是:

  • 可以动态添加/删除行(完成)
  • 可以动态添加/删除列(我如何才能做到这一点?)
  • 更改后的模型可以保存在数据库中,以便修改特征
    这可能吗

    问题是,您无法动态更改jQgrid模型。我看到的两个选择是:

  • 使用GridUnload删除整个网格并使用新的ColModel(如果可以完全更改)重新加载它:

    jQuery(选择器).GridUnload(选择器)

  • 加载所有可能的行并显示/隐藏所需的行,例如使用


  • 为了动态保存,将网格的配置数据作为JSON存储在数据库中就足够了。

    我认为这是可能的,但还没有尝试过

    如果使用ASP.NET MVC: 您是否尝试以编程方式将控制器中的网格添加为ViewData?这是一个想法

    此链接可以让您进一步了解:


    希望它有帮助

    jqGrid 3.6现在支持动态显示/隐藏列,并且在3.6演示页面上有一个“列选择器”演示。这足以满足您的需要吗?

    在他们的文档中搜索
    getColProp
    setColProp

    函数objedit(id、cellname、value)
    {
    var标志=0;
    对于(变量i=0;i
    我决定首先在我的仪表板上创建横向/纵向地图组件,下周我将尝试解决这个问题。谢谢你的回答!setColProp('colname',{editoptions:{value:'True:False}});
     bindJqGrid("SetPayInvoice", feeID, datasetID, 1);
    
    function bindJqGrid(actionController, feeID, datasetID, step)
     {
        agreementID = $("#agreementID").val();
    
        mappingTemplateID = $("#mappingTemplateID").val();
        invoiceID = $("#invoiceID").val();
        var action = '/PayInvoice/' + actionController + '?agreementID=' + agreementID + '&mappingTemplateID=' + mappingTemplateID + '&invoiceID=' + invoiceID + '&feeID=' + feeID + '&datasetID=' + datasetID;
        var caption = "Invoice Exception";
        $("#headerText").html(caption);
        JQGrid(caption, action);
    }
    function JQGrid(caption, action)
     {    $("#tblGrid").jqGrid('GridUnload');
    
        $.ajax({
            url: action,
            dataType: "json",
            mtype: 'POST',
            success: function (result) {
                if (result) {
                    if (!result.Error && result != "" && result != undefined) {
                        $("#TotalData").html(result.records);
                        $("#divWorkflowWrapper").show();
                        $("#dvFooter").show();
    
                        var colData = "";
                        colData = columnsData(result.column);
                        colData = eval('{' + colData + '}');
    
                        $("#tblGrid").jqGrid({
                            url: action,
                            datatype: 'json',
                            mtype: 'GET',
                            colNames: result.column,
                            colModel: colData,
                            autowidth: true,
                            height: 550,
                            rowNum: 25,
                            rowList: [25, 50, 75, 100],
                            loadtext: "Loading...",
                            pager: '#tblGridpager',
                            viewrecords: true,
                            gridview: true,
                            altRows: true,
                            cellEdit: true,
                            cellsubmit: "remote",
                            cellurl: '/PayInvoice/GridSavecell',
                            beforeSelectRow: function (rowid) { return false; },
                            ondblClickRow: function (rowid, iRow, iCol) {
                                jQuery("#tblGrid").editCell(iRow, iCol, true);
                            },
                            afterEditCell: function () {
                                e = jQuery.Event("keydown");
                                e.keyCode = $.ui.keyCode.ENTER;
                                edit = $(".edit-cell > *");
                                edit.blur(function () {
                                    edit.trigger(e);
                                });
                            },
                           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
                        });
                    }
                }
                else {
                    $("#divWorkflowWrapper").hide();
                    $("#dvFooter").hide();
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                if (xhr && thrownError) {
                    alert('Status: ' + xhr.status + ' Error: ' + thrownError);
                }
            }
        });
    }
    
    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++;
        }
    }
    
    
    function columnsData(Data) 
    {
    
    var formater = "";
    
        var str = "[";
        for (var i = 0; i < Data.length; i++) {
            if (Data[i] == "Id")
                str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', hidden: true,}";
            else
                str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', editable: true}";
            if (i != Data.length - 1) {
                str = str + ",";
            }
        }
        str = str + "]";
        return str;
    }
    //------end grid part----------