作者:张老三的专栏
http://blog.csdn.net/billy_zh/
在一些应用中,希望将模式对话框的值回送(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论坛查找。
分享到:
相关推荐
- **Web API/SignalR实时通信**: 对于需要实时交互的对话框,可以结合Web API和SignalR实现服务器推送,这样即使在对话框打开状态下,用户也能实时接收到服务器更新的信息。 文件名称"SimpleChat"可能代表一个简单...
2. 页面使用了大量的Ajax技术,没有任何的直接提交或回传(Submit Form or postback),分页,查询,对话框,都以Ajax的方式实现。 3. 所有Ajax技术的客户端全部基于JQuery,服务端则使用我的Ajax服务端框架 4. 客户端...
Postback 则是一种提交表单的方式,通过POST请求将表单数据提交到服务器端。它可以实现页面的部分刷新,但与Callback 相比,Postback 需要刷新整个页面。 在该文档中,我们可以看到 Callback 的实现方法,包括注册...
当用户在客户端进行操作,如点击按钮,浏览器会将该事件发送到服务器端,服务器端处理事件并可能更新页面状态,然后将更新后的页面回送到客户端。这种模式使得开发者可以创建响应用户操作的交互式Web应用。 事件...
本文将深入探讨Web.Config文件中的节点说明及其在服务端控件中的应用。 首先,我们来关注"web.config节点说明.docx"文件所涵盖的内容。Web.Config文件由多个配置节(nodes)组成,每个节代表一种特定的配置选项。...
当不使用 AJAX 时,`confirm` 的返回值需要通过页面的回发(Postback)传递到服务器。一种实现方式是使用 `StringBuilder` 在后端生成 JavaScript 代码,并通过 `RegisterStartupScript` 注册到页面。以下是一个...
"ASP.NET—001:GridView绑定List、页面返回值"的主题涉及了如何将数据源绑定到GridView以及处理页面间的数据传递。 首先,让我们深入理解GridView的绑定机制。在ASP.NET中,GridView可以绑定到各种数据源,包括但...
回送(PostBack)是ASP中的一个重要概念,它是指用户在Web页面上进行操作后,浏览器将整个页面数据发送回服务器进行处理的过程。当用户提交表单或者触发某个客户端事件时,页面会通过HTTP POST请求发送到服务器,这...
2. **Partial Postbacks**:在UpdatePanel内操作触发后,浏览器仅发送与UpdatePanel相关的数据到服务器,这被称为部分回发(Partial Postback)。相比全回发,部分回发减少了网络流量,提高了响应速度。 3. **...
一个有效的方法是使用StringBuilder类来动态构建JavaScript代码,并通过RegisterStartupScript方法将其注入到页面中。具体做法如下: 1. 在后台代码中,创建一个StringBuilder对象,并使用Append方法来拼接...
在Asp.net中,服务端控件通常与视图状态(ViewState)和回发(PostBack)机制紧密相关。此下拉菜单控件可能也利用了这些特性来保持用户的选择状态,即使在页面回发后也能保持菜单的设置。开发者可能需要理解如何正确...
在*** Web Forms应用程序中,页面上的按钮点击或者其他控件触发的回发(PostBack)是一种常见的用户交互操作。为了在***中利用JQuery技术来追踪哪个元素引起了PostBack,需要结合前端的JQuery脚本与后端的***逻辑。 ...
Understanding more about events and postback
3. **使用IsPostBack检查**:在Page_Load事件处理程序中,通过检查IsPostBack属性来区分首次加载页面和回发事件。只有在IsPostBack为False时才填充GridView,防止在PostBack时重复加载数据。 4. **使用...
本篇文章将深入探讨三种常见的开发模式:XMLHTTP+Web Form、XMLHTTP+HttpHandler以及Callback,并以"Hello World"程序为例,来阐述每种模式的工作原理和实现方式。 1. **XMLHTTP+Web Form** Web Form是ASP.NET框架...
IIRF_URLRewrite提供的解决方案是通过配置规则来确保POSTBACK请求能够正确地路由到原始处理程序,即使URL已经被重写。这样可以保持页面状态的连续性,避免因URL重写而引发的会话丢失或错误跳转。 **技术栈:C#、ASP...
【基于IIS层的IIRF实现URL重写 + 完美解决POSTBACK问题】 1.请在 Windows2003 操作系统环境下测试。 2.请确认您的IIS版本为 IIS6.0+ 。 3.请确认您已经将此项目的ASP.NET网站版本手动设置为 .NET 2.0. 4.请将Bin...
在ASP.NET中,PostBack是页面生命周期的一部分,当用户点击按钮或其他交互元素时,整个页面会回传到服务器进行处理,然后返回新的HTML页面给客户端。这种模式在处理大量数据或复杂的用户交互时可能会导致页面加载较...
本文将深入探讨如何在GridView的第一列实现CheckBox全选功能,包括通过postBack(服务器端)和JavaScript(客户端)两种方式。 **1. GridView中的CheckBox全选:** 在GridView中,我们通常会为每一行数据添加一个...
10. **模板方法模式(Template Method Pattern)**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。在ASP.NET MVC中,控制器的Execute方法就是一个模板方法,具体的操作由控制器的Action方法实现。 以上...