网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Ajax
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.asp.net ajax 1.0,hello world程.
.Ajax优于JSF的原因.
.微软的Ajax库客户端Bug总结.
.处理Asp.net Ajax框架12029,1200.
.通过PHP和Sajax使用Ajax之JavaSc.
.从两方面看AJAX与B/S.
.使用AJAX技术打造博客无刷新搜索.
.使用Ajax时的十个常犯的错误.
.Ajax核心:XMLHTTP组件相关技术资.
.基于css样式绑定的样式驱动式AJA.
.初步了解 ASP.NET AJAX 扩展.
.基于ASP.NET AJAX的WebPart开发与.
.AJAX联手SOA 新一代Web2.0应用程.
.AJAX技术 vs 传统的ASP无刷新技术.
.在ASP.NET AJAX中别使用mode="Le.
.AJAX有没有未来?.
.Ajax实现在textbox中输入内容,动.
.利用AJAX和ASP.NET实现简单聊天室 .
.Ajax & XMLHttpRequset.
.asp简单的ajax留言板(采用三层模.

注册起动脚本,ASP.NET AJAX的一项重要功能!

发表日期:2006-11-20


    最近的项目中一直在使用Atlas July CTP,自从Atlas正式更名后,连续推出了Beta和Beta2两个版本,但是我一直在观望,原因就是Beta版本不稳定而且升级太麻烦了。一日偶然看到了杨丹的这篇随笔,突然发现原来ScriptManager可以注册在客户端部分刷新的UpdatePanel中注册启动后执行的JavaScript!这可是困扰了我很长时间的一个问题!这样不但可以在使用UpdatePanel的情况下使用Javascript弹出对话框,也可以在开发使用Javascript脚本的服务器控件的时候,使控件的起动脚本得以执行,这样原来的和UpdatePanel不兼容的控件可以很容易的改为AJAX enabled^_^。
    不过,令人不解的是不知道处于什么考虑,RegisterStartupScript函数竟然实现为了类的静态函数,可是没有ScriptManager的UpdatePanel更本不能执行啊,这样还需要多打几个字!另外,需要注意的是第一个参数是UpdatePanel的实例,如果在页面中有多个UpdatePanel,如果每个UpdatePanel的UpdateMode都是“always”[默认值]的话,那么你使用那个UpdatePanel的实例作为参数都可以;如果每个UpdaePanel的UpdateMode=conditional,那么你必须使用正在更新的那个UpdatePanel作为参数,这样脚本才能起作用。下面是我作的一个简单的示例:
页面标记
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
            </asp:ScriptManager>
            <br />
            <asp:updatepanel id="UpdatePanel1" UpdateMode="conditional"  runat="server"><ContentTemplate>
<asp:TextBox id="TextBox1" runat="server" ></asp:TextBox> <asp:LinkButton id="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
</ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="LinkButton1" />   
                    </Triggers>
</asp:updatepanel>
            <asp:UpdatePanel ID="UpdatePanel2" RenderMode="block"  UpdateMode="always"  runat="server">
                <ContentTemplate>
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">LinkButton</asp:LinkButton>
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
        <div>
                    <br />
                    <asp:updateprogress id="UpdateProgress1" runat="server"><ProgressTemplate>
Please waiting, retrieving data from server
</ProgressTemplate>
</asp:updateprogress>
                    &nbsp;</div>
    </form>
</body>
</html>

代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
       
  }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(1000);
        TextBox1.Text = DateTime.Now.ToLongTimeString();
        TextBox2.Text = TextBox1.Text;
        string js = "alert('ok button1 clicked!')";
        Microsoft.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel2, this.GetType(), "btn1clicked", js, true);
    }
    protected void LinkButton2_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(900);
        TextBox2.Text = DateTime.Now.ToLongTimeString();
        TextBox1.Text = TextBox2.Text;
        string js = "alert('ok button 2 clicked!')";
   
        Microsoft.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel2, this.GetType(), "btn2clicked", js, true);
   
    }
}    BTW,我在使用时发现一个问题,不知道是个Bug还是我使用不当,我在调试中发现UpdatePanel.IsInPartialRendering的值始终是false!希望有高人指点一下:)。

http://www.cnblogs.com/dajianshi/archive/2006/11/20/565524.html

上一篇:PHP和AJAX打造高级RSS聚合器 人气:7083
下一篇:利用Ajax技术写一个迷你留言板WEB控件 人气:8286
浏览全部ASP.NET AJAX的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐