--------------------------------代码实现异步回传--------------------------------------------
页面关键代码
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<%= DateTime.Now %>
<asp:Button ID="Button2" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
</body>
后台代码
public partial class Demo2_API : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//让button1能够引发异步回传(且button1不在UpdatePanel中)
ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.Button1);
//让button2能够引发同步回传(且button2在UpdatePanel中)
ScriptManager.GetCurrent(this).RegisterPostBackControl(this.Button2);
}
protected void Button1_Click(object sender, EventArgs e)
{
this.UpdatePanel1.Update();//更新UpdatePanel1中的内容
}
}
----------------------异步回传时弹出javascript脚本-----------------------
页面关键代码
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<%= DateTime.Now %>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
后台代码:
public partial class Demo5_ScriptManagerReg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
//在UpdatePanel1更新时弹出javascript脚本
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "UpdatePanel1", "alert(1)", true);
//在UpdatePanel2更新时弹出javascript脚本
ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "UpdatePanel2", "alert(2)", true);
}
}
-----------------------利用代码(创建UpdatePanel)实现AJAX效果-----------------------------
页面代码:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</form>
</body>
后台代码:
public partial class Demo7_ProgramicUpdatePanel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UpdatePanel up = new UpdatePanel();
up.ID = "UpdatePanel1";
this.Form.Controls.Add(up);
LiteralControl lc = new LiteralControl(DateTime.Now.ToString());
up.ContentTemplateContainer.Controls.Add(lc);
Button btn = new Button();
btn.Text = "Refresh";
up.ContentTemplateContainer.Controls.Add(btn);
}
}
--------------------AJAX异步更新的错误处理-----------------------------------------------------
可以通过ScriptManager控件的OnAsyncPostBackError事件和AsyncPostBackErrorMessage属性捕捉和设置回传时的错误消息
示例:
页面代码:
- <body>
-
<form id="form1" runat="server">
- <div>
-
<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">
- </asp:ScriptManager>
- </div>
-
<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
- <ContentTemplate>
-
<asp:TextBox ID="TextBox1" runat="server" Width="56px"></asp:TextBox>
-
<asp:Label ID="Label1" runat="server" ForeColor="DarkViolet" Text="+" Width="13px"></asp:Label>
-
<asp:TextBox ID="TextBox2" runat="server" ForeColor="DarkOrchid" Width="67px"></asp:TextBox>
-
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="计算"
/>
-
<asp:Label ID="Label2" runat="server" ForeColor="#0000C0" Text="Label"></asp:Label>
- </ContentTemplate>
- </asp:UpdatePanel>
- </form>
- </body>
后台代码:
public partial class UpdatePanelErrorMessage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
double a = Convert.ToDouble(TextBox1.Text.Trim());
double b = Convert.ToDouble(TextBox2.Text.Trim());
double res = a * b;
Label2.Text = res.ToString("f3");//输出字符串格式的控制
}
catch (Exception ex)
{
if (TextBox1.Text.Length > 1 && TextBox2.Text.Length > 1)
{
ex.Data["cuo"] = "这两个数无法相乘!";
}
throw ex;
}
}
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
if (e.Exception .Data ["cuo"]!=null )
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Data["cuo"].ToString();
}
else
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
}
}
}
分享到:
相关推荐
一个基于ASP.NET的有效处理AJAX 异步回传事件中注册客户端代码的类库源码。
这篇文章把AJAX异步处理解吸得淋淋尽致
ajax异步自动填充信息,类似于百度查询的简单demo,希望能帮到大家
原生ajax代码实现异步提交,用传统的ajax实现异步提交判断用户名是否存在,详细和完整的步骤,可运行
一个金典的例子实现ajax异步刷新!希望对坐在学习的朋友有好 的帮助!
这是一个java的web样例工程,实现的是jquery+ajax传输
ajax异步上传文件实现,主要是使用h5的技术,大家可以试试看
vs2013 利用Ajax+Jquery实现异步进度条效果
Ajax存在问题就是在异步情况下无法控制什么时候完成记录显示,本人根据回调方法封装了个类,能够将回调方法用参数方式指定,使ajax调用结束后调用回调方法,吧内容传回。ajaxSubmitToDivCallback(显示内容div,提交...
C#JS AJAX部分代码 用于前后台的数据同步
基于 jQuery 实现的 Ajax 异步分页的技术,网上看到就下载保存下来,感觉很不错
ajax的异步提交语法格式说明 源代码截图
资源名称:Jquery Ajax异步处理Json数据 中文WORD版内容简介:本文档主要讲述的是Jquery Ajax 异步处理Json数据;希望对大家会有帮助;感兴趣的朋友可以过来看看资源截图: 资源太大,传百度网盘了,链接在附件中,...
ajax 异步传输php代码
jQuery与JavaScript各自实现AJAX异步请求验证[整理].pdf
jQuery与JavaScript各自实现AJAX异步请求验证[借鉴].pdf
AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。 AJAX 是一种在 2005 年由 Google 推广开来的编程模式。 AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。 通过 AJAX,你可以创建更...
Ajax异步调用框架 程序介绍 不错的代码 共享一下
基于ajax实现异步提交,页面为两个下拉选,左侧一个显示省份,选择不同的省份,右侧的下拉选显示对应的城市