AJAX代表异步JavaScript和XML。这是一种跨平台技术,可加快响应时间。AJAX服务器控件将脚本添加到由浏览器执行和处理的页面。 但是,像其他ASP.NET服务器控件一样,这些AJAX服务器控件也可以具有与之关联的方法和事件处理程序,这些方法和事件处理程序在服务器端进行处理。 Visual Studio IDE中的控件工具箱包含一组称为“ AJAX扩展”的控件 ScriptManager控件ScriptManager控件是最重要的控件,必须存在于页面上,其他控件才能正常工作。 它具有基本语法: <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> 如果您创建“启用Ajax的站点”或从“添加项目”对话框中添加“ AJAX Web表单”,则该Web表单会自动包含脚本管理器控件。ScriptManager控件负责所有服务器端控件的客户端脚本。 UpdatePanel控件UpdatePanel控件是一个容器控件,它是从Control类派生的。它充当其中子控件的容器,并且没有自己的接口。当内部控件触发回发时,UpdatePanel进行干预以异步启动该发帖并仅更新页面的该部分。 例如,如果按钮控件位于更新面板内部,并且单击了按钮控件,则仅会影响更新面板中的控件,而不会影响页面其他部分上的控件。这称为部分回发或异步回发。 例在您的应用程序中添加一个AJAX Web表单。默认情况下,它包含脚本管理器控件。插入一个更新面板。在更新面板控件中放置一个按钮控件和一个标签控件。将另一组按钮和标签放在面板外部。 设计视图如下所示: 源文件如下: <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> </div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="btnpartial" runat="server" onclick="btnpartial_Click" Text="Partial PostBack"/> <br /> <br /> <asp:Label ID="lblpartial" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> <p> </p> <p>Outside the Update Panel</p> <p> <asp:Button ID="btntotal" runat="server" onclick="btntotal_Click" Text="Total PostBack" /> </p> <asp:Label ID="lbltotal" runat="server"></asp:Label> </form> 这两个按钮控件的事件处理程序具有相同的代码: string time = DateTime.Now.ToLongTimeString(); lblpartial.Text = "Showing time from panel" + time; lbltotal.Text = "Showing time from outside" + time; 观察到在执行页面时,如果单击了全部回发按钮,则会更新两个标签中的时间,但是如果单击了部分回发按钮,则只会更新更新面板中的标签。 一个页面可以包含多个更新面板,每个面板包含其他控件(例如网格)并显示数据的不同部分。 当发生全部回发时,默认情况下将更新更新面板的内容。可以通过更改控件的UpdateMode属性来更改此默认模式。让我们看一下更新面板的其他属性。 UpdatePanel控件的属性下表显示了更新面板控件的属性:
UpdatePanel控件的方法下表显示了更新面板控件的方法:
更新面板的行为取决于UpdateMode属性和ChildrenAsTriggers属性的值。
UpdateProgress控件当更新一个或多个更新面板控件时,UpdateProgress控件在浏览器上提供某种反馈。例如,当用户登录或在执行一些面向数据库的作业时等待服务器响应时。 它提供视觉确认,例如“正在加载页面...”,表明工作正在进行中。 UpdateProgress控件的语法为: <asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" > <ProgressTemplate> Loading... </ProgressTemplate> </asp:UpdateProgress> 上面的代码片段显示了ProgressTemplate标记内的一条简单消息。但是,它可能是图像或其他相关控件。除非使用AssociatedUpdatePanelID属性将其分配给单个更新面板,否则UpdateProgress控件将为每个异步回发显示。 UpdateProgress控件的属性下表显示了更新进度控件的属性:
UpdateProgress控件的方法下表显示了更新进度控制的方法:
计时器控制计时器控件用于自动启动回发。这可以通过两种方式完成: (1)设置UpdatePanel控件的Triggers属性: <Triggers> <asp:AsyncPostBackTrigger ControlID="btnpanel2" EventName="Click" /> </Triggers> (2)将计时器控件直接放置在UpdatePanel中以充当子控件触发器。一个计时器可以触发多个UpdatePanel。 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> <ContentTemplate> <asp:Timer ID="Timer1" runat="server" Interval="1000"> </asp:Timer> <asp:Label ID="Label1" runat="server" Height="101px" style="width:304px" > </asp:Label> </ContentTemplate> </asp:UpdatePanel> |