📜  ASP.NET-Ajax控件

📅  最后修改于: 2020-11-21 05:50:20             🧑  作者: Mango


AJAX代表异步JavaScript和XML。这是一种跨平台技术,可加快响应时间。 AJAX服务器控件将脚本添加到由浏览器执行和处理的页面。

但是,像其他ASP.NET服务器控件一样,这些AJAX服务器控件也可以具有与它们关联的方法和事件处理程序,这些方法和事件处理程序在服务器端进行处理。

Visual Studio IDE中的控件工具箱包含一组称为“ AJAX扩展”的控件

AJAX扩展

ScriptManager控件

ScriptManager控件是最重要的控件,必须存在于页面上,其他控件才能正常工作。

它具有基本语法:



如果您创建“启用Ajax的站点”或从“添加项目”对话框中添加“ AJAX Web表单”,则该Web表单会自动包含脚本管理器控件。 ScriptManager控件负责所有服务器端控件的客户端脚本。

UpdatePanel控件

UpdatePanel控件是一个容器控件,它是从Control类派生的。它充当其中子控件的容器,并且没有自己的接口。当内部控件触发回发时,UpdatePanel进行干预以异步启动该发帖并仅更新页面的该部分。

例如,如果按钮控件位于更新面板内部,并且单击了它,则仅会影响更新面板中的控件,而不会影响页面其他部分上的控件。这称为部分回发或异步回发。

在您的应用程序中添加一个AJAX Web表单。默认情况下,它包含脚本管理器控件。插入一个更新面板。在更新面板控件中放置一个按钮控件和一个标签控件。将另一组按钮和标签放在面板外部。

设计视图如下所示:

脚本管理器

源文件如下:



 

Outside the Update Panel

两个按钮控件的事件处理程序都有相同的代码:

string time = DateTime.Now.ToLongTimeString();
lblpartial.Text = "Showing time from panel" + time;
lbltotal.Text = "Showing time from outside" + time;

观察到在执行页面时,如果单击了全部回发按钮,则会更新两个标签中的时间,但是如果单击了部分回发按钮,则只会更新更新面板中的标签。

更新面板

一个页面可以包含多个更新面板,每个面板包含其他控件(例如网格)并显示数据的不同部分。

当发生全部回发时,默认情况下将更新更新面板的内容。可以通过更改控件的UpdateMode属性来更改此默认模式。让我们看一下更新面板的其他属性。

UpdatePanel控件的属性

下表显示了更新面板控件的属性:

Properties Description
ChildrenAsTriggers This property indicates whether the post backs are coming from the child controls, which cause the update panel to refresh.
ContentTemplate It is the content template and defines what appears in the update panel when it is rendered.
ContentTemplateContainer Retrieves the dynamically created template container object and used for adding child controls programmatically.
IsInPartialRendering Indicates whether the panel is being updated as part of the partial post back.
RenderMode Shows the render modes. The available modes are Block and Inline.
UpdateMode Gets or sets the rendering mode by determining some conditions.
Triggers Defines the collection trigger objects each corresponding to an event causing the panel to refresh automatically.

UpdatePanel控件的方法

下表显示了更新面板控件的方法:

Methods Description
CreateContentTemplateContainer Creates a Control object that acts as a container for child controls that define the UpdatePanel control’s content.
CreateControlCollection Returns the collection of all controls that are contained in the UpdatePanel control.
Initialize Initializes the UpdatePanel control trigger collection if partial-page rendering is enabled.
Update Causes an update of the content of an UpdatePanel control.

更新面板的行为取决于UpdateMode属性和ChildrenAsTriggers属性的值。

UpdateMode ChildrenAsTriggers Effect
Always False Illegal parameters.
Always True UpdatePanel refreshes if whole page refreshes or a child control on it posts back.
Conditional False UpdatePanel refreshes if whole page refreshes or a triggering control outside it initiates a refresh.
Conditional True UpdatePanel refreshes if whole page refreshes or a child control on it posts back or a triggering control outside it initiates a refresh.

UpdateProgress控件

当更新一个或多个更新面板控件时,UpdateProgress控件在浏览器上提供某种反馈。例如,当用户登录或在执行一些面向数据库的作业时等待服务器响应时。

它提供视觉确认,如“正在加载页面…”,表明工作正在进行中。

UpdateProgress控件的语法为:



   
      Loading...
   
   

上面的代码片段显示了ProgressTemplate标记内的一条简单消息。但是,它可以是图像或其他相关控件。除非使用AssociatedUpdatePanelID属性将其分配给单个更新面板,否则将为每个异步回发显示UpdateProgress控件。

UpdateProgress控件的属性

下表显示了更新进度控件的属性:

Properties Description
AssociatedUpdatePanelID Gets and sets the ID of the update panel with which this control is associated.
Attributes Gets or sets the cascading style sheet (CSS) attributes of the UpdateProgress control.
DisplayAfter Gets and sets the time in milliseconds after which the progress template is displayed. The default is 500.
DynamicLayout Indicates whether the progress template is dynamically rendered.
ProgressTemplate Indicates the template displayed during an asynchronous post back which takes more time than the DisplayAfter time.

UpdateProgress控件的方法

下表显示了更新进度控制的方法:

Methods Description
GetScriptDescriptors Returns a list of components, behaviors, and client controls that are required for the UpdateProgress control’s client functionality.
GetScriptReferences Returns a list of client script library dependencies for the UpdateProgress control.

计时器控制

计时器控件用于自动启动回发。这可以通过两种方式完成:

(1)设置UpdatePanel控件的Triggers属性:

 
   

(2)将计时器控件直接放置在UpdatePanel内部以充当子控件触发器。一个计时器可以触发多个UpdatePanel。