Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQGrid使用来自服务器的更新数据刷新数据_Javascript_Json_Jqgrid_Refresh_Edit - Fatal编程技术网

Javascript JQGrid使用来自服务器的更新数据刷新数据

Javascript JQGrid使用来自服务器的更新数据刷新数据,javascript,json,jqgrid,refresh,edit,Javascript,Json,Jqgrid,Refresh,Edit,我有一个需要编辑的Jqgrid。我已经成功地配置了网格,以便在编辑后保存数据,但是问题是,当保存数据时,网格不会使用数据库中的数据进行刷新。例如,版本字段由应用程序后端自动更新,但在编辑完成后,它不会刷新,并且会显示旧值。我试过了 再灌注 完成后 这是行不通的。我还在其中放置了一个警报,以验证函数是否被调用,但警报也没有显示。此外,我将loadonce设置为false,将reloadaftersubmit设置为true,但这也不起作用。我认为问题可能是我没有正确配置编辑或将上述参数放置在错误的位

我有一个需要编辑的Jqgrid。我已经成功地配置了网格,以便在编辑后保存数据,但是问题是,当保存数据时,网格不会使用数据库中的数据进行刷新。例如,版本字段由应用程序后端自动更新,但在编辑完成后,它不会刷新,并且会显示旧值。我试过了 再灌注 完成后

这是行不通的。我还在其中放置了一个警报,以验证函数是否被调用,但警报也没有显示。此外,我将loadonce设置为false,将reloadaftersubmit设置为true,但这也不起作用。我认为问题可能是我没有正确配置编辑或将上述参数放置在错误的位置

保存完成(编辑)后,更新的数据(即整个页面)将返回到Jqgrid(作为json)。这里的问题是显示旧数据,以及如何在编辑后显示更新的数据

更新:我发现当我通过弹出框编辑时,会执行后提交。但是,编辑是通过formatoptions进行的,formatoptions允许编辑表本身中的数据。现在,当数据在不使用弹出窗口的情况下从网格本身进行编辑和保存时,我希望启动一个后提交来刷新表。我应该把我的后验放在哪里/如何做到这一点

/**
 * Initialize and Draw JQGrid
 * @return
 */
function drawFOMJQGrid(){

    var lastsel2;

    jQuery("#tblGrid").jqGrid({     

        height: 180, 
        width:990,
        datatype: "json", 
        colNames:['','Hotel','Outlet','Major Group','Item Group','Version'], 
        jsonReader : {
              root: "regDetails", 
              page: "page",
              total: "total",
              records: "records",   
              repeatitems: false
        },
        colModel:[ 
            {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions', formatoptions:{keys:true}},
            {name:'hotelName',index:'hotelName',align:"left",width:30,resizable:false}, 
            {name:'majorGroupName',index:'majorGroupName',align:"left", width:20,resizable:false}, 
            {name:'itemGroupName',index:'itemGroupName', width:30,align:"left",resizable:false},
            {name:'version',index:'version', width:20,align:"right",resizable:false,editable:true,hidden: false}


        ],

        onSelectRow: function(id){
        },
        /*afterSubmit : function(response, postdata){
                        alert("AAAA");
        },  
        afterComplete : function(response, postdata){
                        alert("AAAA2");
        },  */              
        //rowList:[10,20,30], 
        rowNum:5,   
        pager: '#divGridPg', 
        sortname: 'hotelName', 
        viewrecords: true, 
        sortorder: "outletName",
        gridview: true, 
        bgiframe: true,
        autoOpen: false,
        caption: 'POS Item Pricing',
        forceFit: false,
        loadtext: 'Loading ...',
        sortable: true,
        loadonce: false,
        editurl:  "itemPricingSave.action", //"/js/itemPricing/server.js",          
        datatype: "json"




    }); 



    $("#tblGrid")[0].addJSONData(regGridJSONData);
    $("#tblGrid").setGridParam({datatype: 'json'});
    jQuery("#tblGrid").jqGrid('navGrid','#divGridPg',{edit:true,add:false,del:false,reloadAfterSubmit:true});       


}

/**
 * Initialize and Draw JQGrid
 * @return
 */
function drawFOMJQGrid(){

    var lastsel2;

    jQuery("#tblGrid").jqGrid({     

        height: 180, 
        width:990,
        datatype: "json", 
        colNames:['','Hotel','Outlet','Major Group','Item Group','Version'], 
        jsonReader : {
              root: "regDetails", 
              page: "page",
              total: "total",
              records: "records",   
              repeatitems: false
        },
        colModel:[ 
            {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions', formatoptions:{keys:true}},
            {name:'hotelName',index:'hotelName',align:"left",width:30,resizable:false}, 
            {name:'majorGroupName',index:'majorGroupName',align:"left", width:20,resizable:false}, 
            {name:'itemGroupName',index:'itemGroupName', width:30,align:"left",resizable:false},
            {name:'version',index:'version', width:20,align:"right",resizable:false,editable:true,hidden: false}


        ],

        onSelectRow: function(id){
        },
        /*afterSubmit : function(response, postdata){
                        alert("AAAA");
        },  
        afterComplete : function(response, postdata){
                        alert("AAAA2");
        },  */              
        //rowList:[10,20,30], 
        rowNum:5,   
        pager: '#divGridPg', 
        sortname: 'hotelName', 
        viewrecords: true, 
        sortorder: "outletName",
        gridview: true, 
        bgiframe: true,
        autoOpen: false,
        caption: 'POS Item Pricing',
        forceFit: false,
        loadtext: 'Loading ...',
        sortable: true,
        loadonce: false,
        editurl:  "itemPricingSave.action", //"/js/itemPricing/server.js",          
        datatype: "json"




    }); 



    $("#tblGrid")[0].addJSONData(regGridJSONData);
    $("#tblGrid").setGridParam({datatype: 'json'});
    jQuery("#tblGrid").jqGrid('navGrid','#divGridPg',{edit:true,add:false,del:false,reloadAfterSubmit:true});       


}

我执行了以下操作以强制重新加载网格:

.navGrid('#pager',
                    {edit:true,
                    add: true, 
                    del:true,refresh:false},
              { // edit options

                    afterSubmit: function() {
                        comptes[0].clearToolbar();
                        comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
                          return [true,'',false]; // no error and no new rowid
                         }
                }, 
                { // add options

                     afterSubmit: function() {
                            comptes[0].clearToolbar();
                            comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
                        return [true,'']; // no error
                    }
                } ,
                { // delete options
                     afterSubmit: function() {
                            comptes[0].clearToolbar();
                            comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
                        return [true,'']; // no error
                    }
                }       
               );

在完成所有编辑过程后,尝试使用新数据重新加载jqGrid,如下所示:

jQuery("#grid").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');

谢谢你的帮助。当通过弹出的编辑对话框进行编辑时,它起作用。但是,我希望编辑表本身中的数据。现在,当数据在不使用弹出窗口的情况下从网格本身进行编辑和保存时,我希望启动一个后提交来刷新表。我应该把我的后验放在哪里/如何做到这一点。