JQGrid - 弹出 edit/add 个按钮

JQGrid - Pop up for edit/add buttons

我正在使用 JQGrid 管理数据库中的一些数据。 我有一列用于编辑或添加新数据。当我点击这些按钮时,我想要一个弹出窗口,其中包含一个包含所有必要字段的表单。

我觉得配个图会更清楚:

Form pop-up model

这里是我的网格代码:


            if (gridCtrp.length) {
                gridCtrp.jqGrid({
                    url: "{{ url('/') }}/contreparties/projet/{{ $ID_PROJET }}",
                    mtype: "GET",
                    datatype: 'json',
                    colNames: ["ID","Famille","Libellé","Détail","Précision","Valorisation","Tranche Mini","Tranche Maxi"],
                    colModel: [
                        {name: "ID_CONTREPARTIE", sortable: false, align:"center", hidden: true},
                        {name: "LIBCOD", align: "center",width: 100},
                        {name: "LIBEL_CTRPRT",align: "center", sortable: false, width: 100},
                        {name: "DETAIL_CTRPRT",align:"center", width: 100},
                        {name: "PRECISION_TRCH",align:"center",width: 150},
                        {name: "CORRES_MONETAIRE",align:"center", width: 150},
                        {name: "NUM_MINI", align:"center", width: 100},
                        {name: "NUM_MAXI", align: "center", width: 150}
                    ],
                    loadtext: "Chargement...",
                    viewrecords: true,
                    emptyrecords: "Aucune contrepartie",
                    width: 850,
                    height: 300,
                    scrollerbar: true,
                    rowNum: 100,
                    sortable: true,
                    loadonce: true,
                    hidegrid: false,
                    multipleSearch: true,
                    shrinkToFit: false,
                    gridview: true,
                    autoencode: false,
                    gridComplete: function() { 
                        var ids = gridCtrp.jqGrid('getDataIDs');
                        var tabData = gridCtrp.jqGrid('getRowData');
                        for (var i = 0; i < ids.length; i++) {
                            var id = ids[i];
                            var updateButton = "<a id='editButtonCtrp' rel='popover' data-toggle='popover' title='Popover Header'><i class='fa fa-pencil' aria-hidden='true'></i></a>";
                            var deleteButton = "<a href='' title='Supprimer'><i class='fa fa-trash' aria-hidden='true'></i></a>";
                            gridCtrp.jqGrid('setRowData',ids[i],{NUM_MAXI: tabData[i].NUM_MAXI + ' ' +  updateButton + ' ' + deleteButton });
                        }
                    }
                })
            }
        });

我已经尝试使用 Bootstrap 4 弹出窗口和 JQuery-UI 对话框,但对我来说没有任何效果....另外当我注意到当我 运行 console.log($('a[rel=popover]')) 恢复我想要实现弹出窗口的所有 edit/add 按钮,它 return 什么都没有...

有人已经实现了类似的东西吗?提前致谢。

在您的 gridComplete 代码中,缺少对按钮的绑定操作 - 您应该为其绑定一个操作。此代码在哪里以及您如何尝试 运行 它。

下面的代码很旧但可以工作:

gridComplete: function() {
    var ids = jQuery("#rowed2").jqGrid('getDataIDs');
    for(var i=0;i < ids.length;i++){
        var cl = ids[i];
        be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#rowed2').editRow('"+cl+"');\"  />"; 
        se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#rowed2').saveRow('"+cl+"');\"  />"; 
        ce = "<input style='height:22px;width:20px;' type='button' value='C' onclick=\"jQuery('#rowed2').restoreRow('"+cl+"');\" />"; 
        jQuery("#rowed2").jqGrid('setRowData',ids[i],{act:be+se+ce});
    }
}

此外,这是非常古老的方法,为了优化您的代码,我强烈建议您使用自定义格式化程序 - 这将使您的代码速度提高 10 倍。

为此,您需要阅读一些内容 docs here: