如何从dataUrl:jqGrid重新加载数据

时间:2012-10-11 14:25:19

标签: jquery jquery-ui jqgrid

我正在使用jqgrid,并在其中添加了一个子网格,如下所示,

enter image description here

如你所见,
具有11和13列的行是主网格行

每一行都有子网格感兴趣, Add Record元素显示Add Sub up for Subgrid

以下是子网格的代码,

subGridRowExpanded: function(subgrid_id, row_id) {
            var subgrid_table_id, pager_id;
            subgrid_table_id = subgrid_id+"_t";
            pager_id = "p_"+subgrid_table_id;
            $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
            jQuery("#"+subgrid_table_id).jqGrid({
                url:"shops?q=2&ShopID="+row_id,
                datatype: "xml",
                colNames: ['Interest'],
                colModel: [
                    //{name:"Id",index:"ShopID",width:80,editable:false,editoptions:{readonly:false,size:40}}, //Shop ID not required
                    {name:"id",index:"id",editable:true,edittype:"select",editoptions:{dataUrl:'shops?q=3&ShopID='+row_id},editrules:{required:true}}
                ],
                rowNum:10,
                pager: pager_id,
                width: '100%',
                height: '100%',
                scrollOffset: 0,
                sortname: 'num',
                sortorder: "asc",
                height: '100%',
                editurl:'shops?q=5&ShopID='+row_id
            });
            jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:true,del:true})
        },
        subGridRowColapsed: function(subgrid_id, row_id) {
            // this function is called before removing the data
            //var subgrid_table_id;
            //subgrid_table_id = subgrid_id+"_t";
            //jQuery("#"+subgrid_table_id).remove();
        }

一旦我们从弹出窗口添加值,它将转到兴趣选项卡,用于主网格的各行,并且应该从弹出窗口中删除该增值。

当前值已成功添加,但它会保持弹出状态,直到我们刷新主窗体。

提交后有没有办法重新加载弹出窗口?

感谢您的时间,谢谢

2 个答案:

答案 0 :(得分:1)

如果要在"Cache-Control: private, max-age=0"的响应中设置HTTP标头dataUrl(请参阅herehere),问题可能会解决。如果您使用ASP.NET,我建议您阅读the answer

或者,您可以使用选项

ajaxSelectOptions: { cache: false }

(见the answer)。

如果上述所有方法都没有帮助,您可以使用ajaxSelectOptions.data 作为功能,这样您就可以确保发送ShopID dataUrl参数recreateForm: true的不同值。有关详细信息,请参阅the answer

更新:我建议您另外使用添加和编辑表单的{{1}}选项。请参阅here使用示例。

答案 1 :(得分:0)

找到解决方案,

实际上我们可以使用afterSubmit事件,

可以在两个链接中找到解决方案

How to close form and reload grid after submit in jqgrid?

http://www.trirand.com/blog/?page_id=393/help/how-to-reload-edit-form-after-submit/

谢谢,如果有人需要更多解释,请发表评论