2012-10-11 35 views
0

我使用的jqGrid,并添加里面一个子网格,它看起来像下面,如何从dataUrl重新加载数据:jqGrid的

enter image description here

正如你所看到的,
行具有11列和13是主网架行

而且每行已为次网格兴趣, 添加记录元素显示添加弹出一个次网格

这里是代码对次网格的样子,

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(); 
     } 

一旦我们从弹出增加值最多不言而喻兴趣​​标签的主要网格的相应行和用于增值应该从弹出移除。

目前价值被成功添加,但它在弹出停留在那里,直到我们刷新的主要形式。

有什么办法重装后提交添加弹出?

欣赏你的时间,谢谢

回答

1

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

另外,您可以使用该选项

ajaxSelectOptions: { cache: false } 

(见the answer)。

如果高于一切不会帮助,您可以使用ajaxSelectOptions.data作为功能这样可以让你确定发送的dataUrlShopID参数的不同值。有关更多详细信息,请参见the answer

已更新:我建议您另外使用recreateForm: true选项的添加和编辑窗体。请参阅here使用示例。

+0

嗨奥列格,事实上,除非我重装形式,我不能操纵动态弹出的内容,但具有的jqGrid事件afterSubmit我们可以在提交后有操纵的内容。谢谢您的回答 – Pradeep

+0

@pradeep:afterSubmit'的'目标是处理来自服务器的响应一些额外的数据,并进行其他修改*网格中的数据*。例如:您保存数据并且服务器生成您保存在网格中的新的Id,TimstampOfLastChange等数据。我通常使用'rowversion',它存在于数据库表中的每一行中。它允许我实现乐观并发。如果我正确理解你的问题,你的问题只是因为缓存了'dataUrl'的前一个响应。这是另一种情况。 – Oleg

+0

@pradeep:例如,用户可以打开某些表单进行编辑,然后取消编辑。在'afterSubmit'将**不被调用**的情况下。在这种情况下,你是否需要修改'dataUrl'?或者我可能没有正确理解你的问题? – Oleg

相关问题