请教一下,不能更新父窗口的问题grid 数据问题,大侠请进来解说一下

问题描述

一、操作1、点击新增入库 2、点击保存,父窗口数据不更新(已经确定数据库已经更新,并且已经确定调用了父窗口的方法refresh()) 3、点击关闭,为什么这个时候父窗口数据出现才会出现呢?(尝试过直接reload父页面,还是无法更新grid页面的数据,只用关闭子窗口时候,数据才会更新过去) 二、代码1、父页面代码,在onReady 方法中写了grid 实例化 和数据来源编写 Ext.onReady(function(){  XXXXX    infostore = new Ext.data.JsonStore({     url:'../storage/stockIn.do?method=loadPlanDetails&simId=${planCode}',     fields:[            {name:'sidAcceptancelistid',mapping:'sidAcceptancelistid'},       {name:'unit'},       {name:'spec'},       {name:'sidBatchno',mapping:'sidBatchno'},       {name:'sidId',mapping:'sidId'},       {name:'sidInamount',mapping:'sidInamount'},       {name:'sidInprice',mapping:'sidInprice'},       {name:'sidInsum',mapping:'sidInsum'},       {name:'sidMedicinecode',mapping:'sidMedicinecode'},       {name:'medName',mapping:'medName'},       {name:'sidMid',mapping:'sidMid'},       {name:'sidValiddate',mapping:'sidValiddate'},       {name:'sidWarningdate',mapping:'sidWarningdate'},       {name:'sidFactoryId',mapping:'sidFactoryId'},       {name:'sidFundSource'}      ]   });   grid = new Ext.grid.GridPanel({ store:infostore, columns:[      {name:'sidId',mapping:'sidId',dataIndex:'sidId',hidden:true},  {name:'sidMid',mapping:'sidMid',dataIndex:'sidMid',header:'入库单主表ID',hidden:true},  {name:'sidMedicinecode',mapping:'sidMedicinecode',dataIndex:'sidMedicinecode',header:'疫苗ID',hidden:true},  //{name:'sidAcceptancelistid',mapping:'sidAcceptancelistid',dataIndex:'sidAcceptancelistid',hidden:true},  {name:'medName',mapping:'medName',dataIndex:'medName',header:'疫苗',width:150},  {header:'单位',dataIndex:'unit',width:60},  {header:'规格',dataIndex:'spec',width:80},  {name:'sidBatchno',mapping:'sidBatchno',dataIndex:'sidBatchno',header:'批号'},  //{header:'资金来源',dataIndex:'sidFundSource',width:100},  {name:'sidInamount',mapping:'sidInamount',dataIndex:'sidInamount',header:'入库数量'},  {name:'sidInprice',mapping:'sidInprice',dataIndex:'sidInprice',header:'购进单价'},  {name:'sidInsum',mapping:'sidInsum',dataIndex:'sidInsum',header:'总金额'},  {name:'sidFactoryId',mapping:'sidFactoryId',dataIndex:'sidFactoryId',header:'生产厂家'},  {name:'sidValiddate',mapping:'sidValiddate',dataIndex:'sidValiddate',header:'有效日期'},  {name:'sidWarningdate',mapping:'sidWarningdate',dataIndex:'sidWarningdate',header:'失效报警日期'}  ], //title:'明细', height:380, bodyStyle:'width:100%;align:center',  frame:true, iconCls:'icon-grid', stripeRows:true, tbar:[  {text:'新增入库疫苗',handler:insertDetail1,iconCls:'add'},'-',  {text:'修改',handler:update,iconCls:'edit'},'-',  {text:'删除',handler:del,iconCls:'remove'} ] }); infostore.load({callback:disableSelect});  grid.addListener('rowdblclick', update); grid.render('grplist');    sm = grid.getSelectionModel();        refresh= function (){  //alert("dd");  //saveStockInm(1);  //remove有反应,  infostore.removeAll();  //reload没有反应  infostore.reload({callback:disableSelect});  grid.addListener('rowdblclick', update);  grid.render('grplist');     sm = grid.getSelectionModel();    //  window.location.reload();   //alert("ddddd333");} 2、父页面代码 弹出模态窗口function insertDetail2(){ //selectFromAccList.jsp var simId=stockinForm.simId.value; var providerId=stockinForm.simProviderid.value;  if(providerId==null||providerId==''){  Ext.Msg.alert('提醒','请先选择供应单位!');  return; }  var val = window.showModalDialog('stockIn.do?method=toAccList&simId='+simId+'&providerId='+providerId,window,'dialogWidth:650px; dialogHeight:470px; status:0; scroll:0;help:0; resizable:1'); if(val){  //saveStockInm(1);  //infostore.removeAll();  //infostore.reload({callback:disableSelect}); }}3、子页面代码 , 调用 父窗口方法,数据不更新  parentWin.refresh();  parentWin.infostore.reload();var parentWin=window.dialogArguments;   function add(){     if (!validate())        return;            Ext.Ajax.request({     url:'../storage/stockIn.do?method=saveOneInDetail',     form:'stockinForm',     success:function(){      returnValue=true;      //window.close();             parentWin.refresh();       parentWin.infostore.reload();              },     failure:function(){Ext.MessageBox.alert('提示', '发生错误....');}    });   }

解决方案

解决办法:在子窗口中加入这个方法,在add的时候,将该执行该方法。//刷新父窗口;function refresh(){ Ext.Ajax.request({ parentWin.infostore.removeAll(); url:parentWin.infostore.url, success:function(response){ var data = Ext.util.JSON.decode(response.responseText); parentWin.infostore.loadData(data); }, failure:function(){Ext.MessageBox.alert('提示', '发生错误....');} });}

时间: 2024-11-30 20:56:30

请教一下,不能更新父窗口的问题grid 数据问题,大侠请进来解说一下的相关文章

如何只更新父窗口的gridview

问题描述 用window.open打开弹出窗口,在弹开窗口更新数据,如何只更新父窗口的gridview,而不要刷新整个父页? 解决方案 解决方案二:用框架解决方案三:把gridview放在iframe或者updatepanel里,弹出窗口时更新即可解决方案四:用框架不大可能,我会破坏整个页面的完整.因为是一个大项目,现在不可能再改页面结构了解决方案五:是关闭子窗口的时候,更新父窗口.解决方案六:有区别吗?解决方案七:我现在用的是把所有的控件的数值放在一个datatable,然后放在session

js实现关闭弹出窗口后更新父窗口

具体代码 父窗口代码:  代码如下 复制代码 <a href="javascript:void(0)" onclick="window.open('child.html','child','width=400,height=300,left=200,top=200');">打开子窗口</a> 子窗口代码:    代码如下 复制代码 <script language="JavaScript" type="te

Qt 子窗口父窗口切换,窗口间传值

 本人代码 代码下载:http://download.csdn.net/detail/u013378306/9621322 效果:实现 父窗口 打开子窗口,关闭子窗口,子窗口向父窗口传值 win_win.pro 文件 #------------------------------------------------- # # Project created by QtCreator 2016-09-04T13:33:26 # #----------------------------------

c++-小弟请教在MFC中子窗口如何获取父窗口的句柄啊

问题描述 小弟请教在MFC中子窗口如何获取父窗口的句柄啊 比如我有个父类的Dialog类为A,还有一个子类的Dialog类为B,然后在A类的头文件中包含了B的头文件,然后在A类中生命一个B类的成员变量,类似下面那样,然后我通过一个button调用DoModal();B类的STYLE改为CHILD了: 然后我希望在子窗口中处理一些数据,然后传给父窗口:比如A中有个IDC_text1 有个IDD_BUTTON1,B中有个IDC_text2,有个IDD_BUTTON2: 我就希望在B中的IDC_tex

请教:如何在子窗口中使用父窗口中的listview控件?!

问题描述 有一个父窗口和子窗口.现在想在子窗口中使用父窗口中的listview,请问该如何做呢? 解决方案 解决方案二:写个管理类,对父窗口的界面管理.字窗口能访问这个管理类就行了!解决方案三:ListViewlist=(ListView)Application.OpenForms["Form1"].Controls["listView1"];if(list!=null)...... 解决方案四:在show子窗口的时候,将ListView传递给它

如何在模式窗口关闭时刷新父窗口

父窗口|刷新 在项目经常会遇到这么一种情况,要在弹出的窗口里面修改父页面中的数据.本文以模式窗口为例,说明如何在更新模式窗口页面之后刷新父窗口的内容. 在一般的情况下,模式窗口的关闭并不会刷新父窗口,我们需要在打开模式窗口的javascript中添加额外的脚本来刷新他的父窗口.实现如下: string url = "ICManageAdd.aspx?ICID="+ICID+"&temp="+rd.Next().ToString()+"&Us

MFC父窗口控制子窗口CListCtrl控件刷新的问题

问题描述 MFC父窗口控制子窗口CListCtrl控件刷新的问题 目标:父窗口单击按钮,向子窗口发送一个消息:子窗口的消息处理函数中,调用列表显示函数来刷新列表数据. 我的代码: // 父窗口void CDlg4::OnButtonClick(){ CDlg43 *dlg = new CDlg43(); dlg->Create(IDD_DIALOG_43this); if (NULL == dlg) { AfxMessageBox(""failed""); d

如何使子控件和父窗口都能接受到CBN_SELCHANGE事件?

情况是这样的:在对话框中有一个自定义组合框控件CMyComboBox,它继承自MFC类CComboBox.在自定义的组合框中,要处理这样一种情况,如果用户没有改变CMyComboBox的值,则不给父窗口发消息,如果改变了,则通知父窗口以进行其它的更新工作.解决方案如下:  //CMyComboBox.hclass CMyComboBox : public CComboBox{        afx_msg BOOL OnSelchange();    } //CMyComboBox.cppBEG

showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框&amp;amp;quot;请重新发送消息,无法刷新网页&amp;amp;quot;

问题描述 showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框"请重新发送消息,无法刷新网页"在网上找了N种办法,就是没用,真伤脑筋.请教哪位大侠指教,项目好赶,如果问题解决马上给分. 解决方案 解决方案二:你是怎么刷的父页?是在父页用location.reload()刷吗?如果是这样的话,注意看一下子窗口的<head><Basetarget="_self"/>解决方案三:我里面已经写了<Basetarget=&