我是从父窗体上打开一个弹出子窗口,
在子窗口内录入数据保存到数据库。
当录入完毕后需要刷新父窗体上的datagrid来展示数据(注意:只是父窗体的datagrid),其他都不需要刷新。
请教怎么做啊?
问这个问题的同志们很多,但是得到答案的很少,
请指教!
由于使用的是vs 2003,1.1 framework,
如果方便的话请使用ajaxPro或者MagicAjax等支持asp.net 1.1的ajax框架。敬请指教,小弟真的很需要~

解决方案 »

  1.   

    http://www.cnblogs.com/huobazi/archive/2004/04/06/5325.html
      

  2.   

    试一下onclik中写上下面这段话:
    opener.window.location.reload();window.close();
      

  3.   

    父窗口datagrid
        Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Dim txt As Object
            Dim i As Integer
            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.Footer Then
                    txt = e.Item.Cells(0).Controls(1)
                                txt.Attributes.Add("onkeydown", "if(event.keyCode==13) {var desc=" + e.Item.Cells(i).Controls(1).ClientID + ".value;var nDialogWidth=700;var nDialogHeight=400;var nLeft=(window.screen.availWidth-nDialogWidth)/2;var nTop=(window.screen.availHeight-nDialogHeight)/2;var sFeatures='dialogLeft:'+nLeft+'px;dialogTop:'+nTop+'px;dialogHeight:'+nDialogHeight+'px;dialogWidth:'+nDialogWidth+'px;help:no;status:no';var bLogged=window.showModalDialog('Dialog_Item.aspx?type=0&desc='+escape(desc),window,sFeatures);if(bLogged != null) {" + e.Item.Cells(i - 1).Controls(1).ClientID + ".value=bLogged[0];" + e.Item.Cells(i).Controls(1).ClientID + ".value=bLogged[2];" + e.Item.Cells(i + 1).Controls(1).ClientID + ".value=bLogged[1];" + e.Item.Cells(i + 2).Controls(1).ClientID + ".value=bLogged[3];" + e.Item.Cells(i + 3).Controls(1).ClientID + ".value=bLogged[8];" + e.Item.Cells(5).Controls(1).ClientID + ".focus();" + e.Item.Cells(5).Controls(1).ClientID + ".select()}}")
            End If
        End Sub子窗口datagrid
        Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Dim txt As Object
            Dim i As Integer
            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
                For i = 0 To DataGrid1.Columns.Count - 1
                    txt = e.Item.Cells(i).Controls(1)
                    Dim Js As String
                    Js = "if(event.keyCode==13)"
                    Js += "{var a=new Array(DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Upc.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Brand.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Part_No.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_txt_Description.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_CATEGORY.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Unit.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Bom.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Qty.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_BatchNo.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_txt_cost.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Itemno.value);"
                    Js += " window.opener=null;window.returnValue =a;window.close()}"
                    txt.Attributes.Add("onkeydown", Js)
                Next i
            End If
        End Sub几年前写的那时候水平烂
    都把js写在.vb里
      

  4.   

    哦,我去实验一下cansum396 的代码,如过用opener.window.location.reload();window.close();这样的话,虽然父窗口是被刷新了,但是整张页面都刷新了~~~
    我只想让datagrid刷新,能不能讲解下关键的地方cansum396 ?
      

  5.   

    做的东西弹出一个窗口处理某些动作后刷新父窗口

    window.opener.location.reload();
    刷新
    如果父窗口在此之前如果有过提交数据的动作,则会出现这么个讨厌的对话筐
    “不重新发送信息,则无法刷新网页”
    痛苦......
    CSDN搜索未果(有几贴都是用Response.Redirect的方法,但我这里是刷父窗口)。
    痛苦.
    ........
    翻我的小本本 后找到办法

    window.opener.location.href=window.opener.location.href
    去刷新(其实是重定位了一下)父窗口
    可行。
    总结: 不能一棵树上掉死 :P