日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

将模式对话框的返回值回送(PostBack)到服务端

發(fā)布時(shí)間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将模式对话框的返回值回送(PostBack)到服务端 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
作者:張老三的專欄??? http://blog.csdn.net/billy_zh/

?

在一些應(yīng)用中,希望將模式對(duì)話框的值回送(PostBack)到服務(wù)端,也就是執(zhí)行一個(gè)服務(wù)端操作,從而刷新頁面。

舉個(gè)例子:比方說新建一個(gè)訂單,此時(shí)希望能在模式對(duì)話框中選擇產(chǎn)品,并將產(chǎn)品的ID返回,同時(shí)刷新訂單中的產(chǎn)品項(xiàng),解決的方法有多種,這里只介紹執(zhí)行服務(wù)器操作的方法。

要將客戶端數(shù)據(jù)回送(PostBack)到服務(wù)端并執(zhí)行相應(yīng)操作,顯然必須提交form并設(shè)置隱藏域__EVENTTARGET的值,好在asp.net已為我們完成了這些,只要以合適的參數(shù)調(diào)用__doPostBack就可以了。

另一個(gè)問題是如何把模式對(duì)話框的值也傳過服務(wù)端,這個(gè)就好說了,有多種方法,在這里用一個(gè)隱藏域來保存值,當(dāng)然這個(gè)隱藏域必須加上runat="server"屬性。

下面給出部分代碼:

主頁面TestDialog.aspx:

<form id="form1" runat="server">
????? <input type="hidden" id="txtValue" runat="server"/>
????? <br/>
????? <asp:LinkButton id="lbtnOpen" runat="server" text="打開對(duì)話框"/>
????? <br/>
????? 對(duì)話框返回值:<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 );
?? }


對(duì)話框頁面test2.aspx:

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


對(duì)話框頁面后置文件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();" );
?? }


注意:在對(duì)話框頁面任何回傳(PostBack)操作都將導(dǎo)致一個(gè)新窗口被打開,解決方法請(qǐng)到csdn論壇查找。

總結(jié)

以上是生活随笔為你收集整理的将模式对话框的返回值回送(PostBack)到服务端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。