A-A+

关闭子页面,只刷新父页面的DataGrid

2008年01月05日 編程·程序設計 暂无评论 阅读 3,324 views 次

界面说明:
父页面(CangKuEdit.aspx)中,按“新增”(id=imgbtnAdd),弹出CangKuAdd.aspx子页面。
子页面(CangKuAdd.aspx )中,按“确定”(id=btnSubmit),新增数据到数据库、关闭子页面、刷新父页面DataGrid 以反映数据的异动,注意只能刷新DataGrid,其他控件里输入的值要保留!

分两种情况:
一、 DataGrid直接写在父页面中

CangKuEdit.aspx
加上一段JS:

XML/HTML代码
  1. <HEAD>  
  2.     <script language="javascript">    
  3.         function doPostBack()   
  4.         {   
  5.             var theform;   
  6.                
  7.             if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1)    
  8.             {   
  9.                 theform = document.forms["CangKuLLEdit"];   
  10.             }   
  11.             else    
  12.             {   
  13.                 theform = document.CangKuLLEdit;   
  14.             }   
  15.                
  16.             theform.__EVENTTARGET.value = "imgbtnAdd";   
  17.             theform.__EVENTARGUMENT.value = null;   
  18.             theform.submit();   
  19.         }   
  20.        
  21.         function openwin(strBillNO)   
  22.         {   
  23.             window.open("CangKuAdd.aspx?returncontrol=imgbtnAddstrBillNo="+ strBillNO,'new1','left=160,top=200,height=450,width=750,toolbar=0,scrollbars=2');   
  24.             return false;   
  25.         }   
  26.     </script>  
  27. </HEAD>  

CangKuEdit.aspx.cs
在Page_Load中加上:

C#代码
  1. imgbtnAdd.Attributes.Add("ondblclick","doPostBack();");   
  2. imgbtnAdd.Attributes.Add("onclick","return openwin('"+txtBillNo.Text+"');");  

CangKuAdd.aspx.cs
在在“确定”事件btnSubmit_Click中加上: 

C#代码
  1. Response.Write("<script>window.opener.document.all.imgbtnAdd.fireEvent('ondblclick');window.close();</script>");  

二、 DataGrid是父页面调用的用户控件(CCDataGrid.ascx,“新增”(id=imgbtnAdd)也在CCDataGrid.ascx中)

因为用户控件会在主页面控件之前被解析,
所以,用户控件的事件中,无法捕获主页面上的控件(如:<asp:textbox id="txtBillNo"/>,原因是它还未被解析)。
CCDataGrid.ascx
加上一段JS:

JavaScript代码
  1. <script language="javascript">   
  2.     function PostBack()   
  3.     {   
  4.         __doPostBack("CCDataGrid1:CCDataGrid1_imgbtnAdd"null);   
  5.     }   
  6. </script>  

CCDataGrid.ascx.cs
在Page_Load中加上:

C#代码
  1. imgbtnAdd.Attributes.Add("ondblclick","PostBack();");  

在“确定”事件imgbtnAdd_Click中加上:

C#代码
  1. this.Page.RegisterHiddenField("IsOpenAddPage","true");   
  2. // 在用户控件的"新增"事件中注册一个隐藏控件:  

CangKuEdit.aspx
在主页面的最底下写: 

XML/HTML代码
  1. </tr>  
  2.             </table>  
  3.         </FORM>  
  4.         <script language="javascript">  
  5.             var obj = document.getElementById("IsOpenAddPage");   
  6.             if (obj!=null)   
  7.             {   
  8.                 if (obj.value=='true')   
  9.                 {   
  10.                     OpenAddPage();   
  11.                     obj.value='';   
  12.                 }   
  13.             }   
  14.                
  15.             function OpenAddPage()   
  16.             {   
  17.                 var SID=document.getElementById('txtBillNo').value;   
  18.                 var url='CangKuAdd.aspx?returncontrol=CCDataGrid1_imgbtnAdd&strBillNo='+SID;   
  19.                 window.open(url,'new1','left=160,top=200,height=450,width=750,toolbar=0,scrollbars=2');   
  20.             }   
  21.         </script>  
  22.     </BODY>  
  23. </HTML>  

CangKuAdd.aspx.cs
在“确定”事件btnSubmit_Click中加上:

C#代码
  1. Response.Write("<script>window.opener.document.all('CCDataGrid1_imgbtnAdd').fireEvent('ondblclick');window.close();</script>");  

 

来源:http://www.vs2005.com/ASP.NET/a325p1.aspx

给我留言

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

Copyright © 寂寞部屋 保留所有权利.   Theme  Ality

用户登录