父窗体中用DataGrid显示数据库中的数据。点击了页面上的按钮以后。
弹出一个新的窗体。在新的窗体中对数据进行修改操作,然后点击“关闭”按钮(服务器控件)
这个时候,我需要父窗体的DataGrid中的数据已经刷新显示最新的数据了。不知道这个问题怎么解决。高手赐教,谢谢。

解决方案 »

  1.   

    在后台也是可以写JS的
    可以用js来刷新
    window.opener.location.reload();
      

  2.   

    谢谢,binny0532(苏打水)
    需要前面先用 window.opener.location.href = "父窗体地址" 吗?
      

  3.   

    楼主应该问的是winform中吧?
    把datagrid的数据源(dataset或者datatable)做为参数传给子窗体就ok
    形如 frmChild frm = new frmChile(dataTable);
    当子窗体关闭时候,父窗体会自动更新
    如果是自定义实体类,则需要实现 IBindingList and IEditableObject interfaces, 
    see Windows Forms Data Binding and Objects
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet02252003.asp
      

  4.   

    window.opener.location.reload();这一句就够了
      

  5.   

    function GuanBiHeShuaXin()
    {
    window.opener.location.href=window.opener.location.href;
    self.close();
    }
      

  6.   

    谢谢各位
     netpot(netpot),我的是ASP.NET。 seabluecn() ,确实可以实现刷新功能,不过相当于点击了浏览器的“刷新”按钮,所以
    会弹出提示。 PerfectStar, "window.opener.loaction.href = window.opener.location.href"具体指什么意思?
      

  7.   

    如果用户已经点过某些按钮,用"location.reload()"就会出现提示,这是不可避免的,所以,特别是在webform中,最好不要用reload;
    可以用window.opener.loaction.href = window.opener.location.href 来刷新,
    简单的说,location.href就是地址,"window.opener.loaction.href = window.opener.location.href"就是设置父窗口的地址为父窗口当前的地址,这个操作会导致页面刷新,但也有问题,此时服务器会执行page_load中
    if(!Page.IsPostBack)
    {
    ...
    }
    中的代码,有时这和我们想要的情况不一样.
    最好是在父窗口页面中弄一个更新用的function,放一个hiddenInput,
    要更新时,调用该function,设置标识值,然后采用"Form1.submit()"的方式来刷新页面,
    服务器中在page_load里判断该hiddenInput的值,按情况进行处理.
    这种方法最麻烦,不过比较保险
      

  8.   

    amnoh(会走路的鱼), 对你想法很感兴趣。
    但我对你的方法的实现还不是很理解。
    请明示。比如:
    1 具体在什么地方,怎样调用更新 hiddenInput 的function
    2 Form1.submit() 是怎样一个方法。谢谢
      

  9.   

    Response.Write("<script language='javascript'>
    window.opener.location.Reload();window.close();</script>");
      

  10.   

    你弹出的新窗体是用什么弹出的呢?如果是用window.showModalDialog()的话,你可以在window.showModalDialog()之后加上document.forms[0].submit()这一句就可以了,子窗体的代码不要做任何改动;
      

  11.   

    To flysky913我是用window.open(URL)来打开新的窗口的。
      

  12.   

    如果你用了自动分页,那window.opener.location.reload();刷新会弹出窗口所以最好还是自己分页,保证你的列表是GET方式访问的,这样window.opener.location.reload();就是对的了
      

  13.   

    1 具体在什么地方,怎样调用更新 hiddenInput 的function
    2 Form1.submit() 是怎样一个方法。
    =====================================================在父窗口放一个hidden Input,写一个JS  function,比如叫个refresh,
    那么就在关闭子窗体的时候,在子窗体中通过
    window.opener.refresh();
    调用,在父窗口的refresh中,先将那个hidden Input的值设置好,
    然后提交表单,那个Form1.submit()就是提交表单了,当然,你的页面中那个服务器端Form不见得叫Form1,但道理是一样的
      

  14.   

    你干脆在父页面挂个按钮(width =0),然后这个按钮的事件代码则是重新查询数据库得到数据和datagrid绑定
    看我的
    function Goto(strUrl){
       str=window.showModalDialog(strUrl,'','dialogheight :260px; dialogwidth :324px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll:No;');
       //alert(str)
       if(str =='0')
       {
         // alert('操作失败');
          return false;
       }
       else if(str=='1')
       {
         // alert('操作成功');
        //  document.all.btnRef.focus();
          //alert('focus');
          document.all.btnRef.click();
          //alert('click');
          return false;
       }
    }