界面說明:
父頁面(CangKuEdit.aspx)中,按“新增”(id=imgbtnAdd),彈出CangKuAdd.aspx子頁面。
子頁面(CangKuAdd.aspx )中,按“确定”(id=btnSubmit),新增資料到資料庫、關閉子頁面、重新整理父頁面DataGrid 以反映資料的異動,注意隻能重新整理DataGrid,其他控件裡輸入的值要保留!
分兩種情況:
一、 DataGrid直接寫在父頁面中
CangKuEdit.aspx
加上一段JS:
<HEAD>
<script language="javascript">
function doPostBack()
{
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1)
{
theform = document.forms["CangKuLLEdit"];
}
else
theform = document.CangKuLLEdit;
theform.submit();
}
function openwin(strBillNO)
window.open("CangKuAdd.aspx?returncontrol=imgbtnAdd&strBillNo="+ strBillNO,'new1','left=160,top=200,height=450,width=750,toolbar=0,scrollbars=2');
return false;
</script>
</HEAD>
CangKuEdit.aspx.cs
在Page_Load中加上:
imgbtnAdd.Attributes.Add("ondblclick","doPostBack();");
imgbtnAdd.Attributes.Add("onclick","return openwin('"+txtBillNo.Text+"');");
CangKuAdd.aspx.cs
在在“确定”事件btnSubmit_Click中加上:
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:
<script language="javascript">
function PostBack()
{
__doPostBack("CCDataGrid1:CCDataGrid1_imgbtnAdd", null);
}
</script>
CCDataGrid.ascx.cs
imgbtnAdd.Attributes.Add("ondblclick","PostBack();");
在“确定”事件imgbtnAdd_Click中加上:
this.Page.RegisterHiddenField("IsOpenAddPage","true");
// 在使用者控件的"新增"事件中注冊一個隐藏控件:
在首頁面的最底下寫:
</tr>
</table>
</FORM>
<script language="javascript">
var obj = document.getElementById("IsOpenAddPage");
if (obj!=null)
if (obj.value=='true')
{
OpenAddPage();
obj.value='';
}
function OpenAddPage()
var SID=document.getElementById('txtBillNo').value;
var url='CangKuAdd.aspx?returncontrol=CCDataGrid1_imgbtnAdd&strBillNo='+SID;
window.open(url,'new1','left=160,top=200,height=450,width=750,toolbar=0,scrollbars=2');
</script>
</BODY>
</HTML>
在“确定”事件btnSubmit_Click中加上:
Response.Write("<script>window.opener.document.all('CCDataGrid1_imgbtnAdd').fireEvent('ondblclick');window.close();</script>");