將強制回應對話方塊的傳回值回送(PostBack)到服務端

來源:互聯網
上載者:User
對話方塊 在一些應用中,希望將強制回應對話方塊的值回送(PostBack)到服務端,也就是執行一個服務端操作,從而重新整理頁面。

舉個例子:比方說建立一個訂單,此時希望能在強制回應對話方塊中選擇產品,並將產品的ID返回,同時重新整理訂單中的產品項,解決的方法有多種,這裡只介紹執行伺服器操作的方法。

要將用戶端資料回送(PostBack)到服務端並執行相應操作,顯然必須提交form並設定隱藏欄位__EVENTTARGET的值,好在asp.net已為我們完成了這些,只要以合適的參數調用__doPostBack就可以了。

另一個問題是如何把強制回應對話方塊的值也傳過服務端,這個就好說了,有多種方法,在這裡用一個隱藏欄位來儲存值,當然這個隱藏欄位必須加上runat="server"屬性。

下面給出部分代碼:

首頁面TestDialog.aspx:


<form id="form1" runat="server">
<input type="hidden" id="txtValue" runat="server"/>
<br/>
<asp:LinkButton id="lbtnOpen" runat="server" text="開啟對話方塊"/>
<br/>
對話方塊傳回值:<asp:TextBox id="txtValue2" runat="server"/>
</form>

首頁面後置檔案TestDiallg.aspx.cs:

private void Page_Load( object Sender, EventArgs e ) {
StringBuilder sb = new StringBuilder();

if ( ! IsClientScriptBlockRegistered( "clientScript" ) ) {
sb.Append( "<script language='javascript'>\n" )
.Append( " function addproduct() { \n" )
.Append( " var ret = window.showModalDialog( 'test2.aspx' ); \n" )
.Append( " if ( ret != undefined ) { \n" )
.Append( " document.getElementById('" + txtValue.ClientID + "').value = ret \n" )
.Append( " __doPastBack('" + lbtnOpen.UniqueID + "', '');\n" )
.Append( " } \n" )
.Append( " }\n " )
.Append( "</script>\n" );

RegisterClientScriptBlock( "clientScript", sb.ToString() );
}

lbtnOpen.Attributes.Add( "onClick", "javascript:addproduct();" );
}

private void lbtnOpen_Click( object Sender, EventArgs e ) {
txtValue2.Text = txtValue.Value;
}

private void InitializeComponent()
{
this.Load += new EventHandler( this.Page_Load );
this.lbtnOpen.Click += new EventHandler( this.lbtnOpen_Click );
}

對話方塊頁面test2.aspx:

<form id="form1" runat="server">
<asp:TextBox id="txtValue" runat="server"/>
<br/>
<input type="button" id="hlnkOk" value="確定" runat="server"/>
</form>

對話方塊頁面後置檔案Test2.aspx.cs

private void Page_Load( object Sender, EventArgs e ) {
StringBuilder sb = new StringBuilder();

if ( ! IsClientScriptBlockRegistered( "clientScript" ) ) {
sb.Append( "<script language='javascript'>\n" )
.Append( " function closedialog() { \n" )
.Append( " window.returnValue = document.getElementById('" + txtValue.ClientID + "').value;\n" )
.Append( " window.close();\n" )
.Append( " }\n " )
.Append( "</script>\n" );

RegisterClientScriptBlock( "clientScript", sb.ToString() );
}
hlnkOk.Attributes.Add( "onClick", "javascript:closedialog();" );
}



相關關鍵詞:
相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。