将模式对话框的返回值回送(PostBack)到服务端
发布日期:2021-06-30 19:03:10
浏览次数:3
分类:技术文章
本文共 2339 字,大约阅读时间需要 7 分钟。
作者:张老三的专栏在一些应用中,希望将模式对话框的值回送(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();" ); }
注意:在对话框页面任何回传(PostBack)操作都将导致一个新窗口被打开,解决方法请到csdn论坛查找。 转载地址:https://linuxstyle.blog.csdn.net/article/details/153266 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月15日 17时12分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ubuntu 18 CTF 环境搭建
2019-04-30
linux内存的寻址方式
2019-04-30
[off by null + tcache dup]lctf_easy_heap
2019-04-30
[pie+libc]national2021_pwny
2019-04-30
task_struct 结构分析
2019-04-30
Linux创建进程的源码分析
2019-04-30
ubunut16.04的pip3出现问题,重新安装pip3
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
orw_shellcode_模板
2019-04-30
[fmt+shellcode]string
2019-04-30
fmt在bss段(neepusec_easy_format)
2019-04-30
[double free] 9447 CTF : Search Engine
2019-04-30
python 函数式编程
2019-04-30
python编码
2019-04-30
scala maven plugin
2019-04-30
flink 1-个人理解
2019-04-30
redis cli
2019-04-30
redis api
2019-04-30