1.特性
AjaxManager 公开了一组服务器端属性。
以下列表显示了一些最常用的。
-
EnableAJAX
— 当您将该EnableAJAX
属性设置为true
(默认值)时,所有请求(RadAjaxPanel
模板内的控件或由 管理的控件RadAjaxManager
)都使用 AJAX 处理。如果此属性为false
,则以传统回发方式处理请求。 -
EnableHistory
— 当您将该EnableHistory
属性设置为true
(默认为false
)时,即使使用 AJAX 也会启用浏览器历史记录。浏览器的前进和后退按钮按预期工作(仅限 IE 浏览器)。 -
EnablePageHeadUpdate
— 当您将该EnablePageHeadUpdate
属性设置为true
(默认值)时,<head>
可以在 AJAX 更新期间修改 Page 元素。当您将控件初始化为不可见或在 AJAX 请求上动态加载控件时,您会发现此功能特别有用。 -
IsAjaxRequest
— 将此属性设置true
为当前请求通过 AJAXfalse
时以及请求为标准回发时。在以下示例中,Button1
已配置为启用 AJAX,警报将显示true
. 单击Button2
将显示false
。
//.net
<%-- 需要局部刷新所限定的标签和按钮 --%>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Button1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Label1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<%-- 局部刷新 --%>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<%-- 整个页面刷新 --%>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
<%-- 创建刷新页面提示,该ResponseScripts属性的用法 --%>
<script type="text/javascript">
setTimeout(function () { alert('this fires after the response'); }, 0);
Sys.Application.initialize();
Sys.Application.add_init(function () {
$create(Telerik.Web.UI.RadAjaxManager, { "ajaxSettings": [{ InitControlID: "Button1", UpdatedControls: [{ ControlID: "Label1", PanelID: ""}]}], "clientEvents": { OnRequestStart: "", OnResponseEnd: "" }, "defaultLoadingPanelID": "", "enableAJAX": true, "enableHistory": false, "links": [], "styles": [], "uniqueID": "RadAjaxManager1" }, null, null, $get("RadAjaxManager1"));
});
//c#
protected void Button1_Click(object sender, EventArgs e)
{
//标签填充内容
Label1.Text = RadAjaxManager1.IsAjaxRequest.ToString();
//弹窗提示内容
RadAjaxManager1.Alert(RadAjaxManager1.IsAjaxRequest.ToString());
}
protected void Button2_Click(object sender, EventArgs e)
{
//弹窗提示内容
RadAjaxManager1.Alert(RadAjaxManager1.IsAjaxRequest.ToString());
}
2.方法
RadAjaxControl
公开了一组服务器端方法。
1)静态方法:RadAjaxManager
提供了一个静态方法,您可以使用该方法RadAjaxManager
从代码隐藏中获取对当前页面上的实例的引用。
RadAjaxManager ram = RadAjaxManager.GetCurrent(Page);
2)实例方法
AjaxManager 和 AjaxPanel 都继承自RadAjaxControl
,它引入了以下方法:
Alert
— 在客户端上执行JavaScript alert()
。Alert()
为将在警报中显示的文本采用单个字符串参数。
RadAjaxManager1.Alert("Please save your changes.");
FocusControl
- 将焦点放在指定的控件上。FocusControl()
采用单个参数,该参数可以是ID
要关注的控件的参数,也可以是要关注的控件的对象引用。
RadAjaxManager1.FocusControl(Button1);
GetAjaxEventReference
— 生成调用该ajaxRequest()方法的客户端代码。
RadAjaxManager1.GetAjaxEventReference(Button1.ClientID);
// returns "$find("RadAjaxManager1").ajaxRequest("Button1");"
RaisePostBackEvent— 触发服务器端AjaxRequest事件并允许您将单个字符串参数传递给事件。AjaxRequest也可以由客户端ajaxRequest()函数触发。
protected void Button1_Click(object sender, EventArgs e)
{
RadAjaxManager1.RaisePostBackEvent(DateTime.Now.ToString());
}
protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
Label1.Text = e.Argument;
}
Redirect
— 将浏览器导航到另一个网页。该方法传递一个字符串参数,即要导航到的 URL。、
RadAjaxManager1.Redirect("https://www.telerik.com");
3.AjaxUpdatedControl 属性
在以声明方式或动态方式配置 Ajax 设置时,您可能需要为每个更新的控件设置以下一些属性:
-
LoadingPanelID
— 获取或设置ID
在 AJAX 期间将显示在更新的控件上的加载面板。 -
UpdatePanelHeight
- 确定环绕更新控件的 AJAX 面板的高度。当您需要为更新控件的父级设置 100% 高度时很有用。 -
UpdatePanelRenderMode
— 确定 AJAX 面板的渲染模式。
演示如何设置AjaxUpdatedControl属性:
//.NET前端
<%-- 被更新的控件写法一 --%>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Button1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="RadAjaxLoadingPanel1"
UpdatePanelHeight="200px" UpdatePanelRenderMode="Inline" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
//C#后端
protected void Page_Load(object sender, EventArgs e)
{
//被更新的控件写法二
//按钮控制
AjaxSetting ajaxSetting = new AjaxSetting();
ajaxSetting.AjaxControlID = "Button1";
//页面更新控制
AjaxUpdatedControl updatedControl = new AjaxUpdatedControl();
updatedControl.ControlID = "Panel1";
updatedControl.LoadingPanelID = "RadAjaxLoadingPanel1";
updatedControl.UpdatePanelHeight = Unit.Pixel(200);
updatedControl.UpdatePanelRenderMode = UpdatePanelRenderMode.Inline;
ajaxSetting.UpdatedControls.Add(updatedControl);
RadAjaxManager1.AjaxSettings.Add(ajaxSetting);
}
<%-- 定义页面加载样式 --%>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default">
</telerik:RadAjaxLoadingPanel>
<%-- 定义一个按钮 --%>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<%-- 定义一个面板 --%>
<asp:Panel ID="Panel1" runat="server">
<asp:Label runat="server" ID="Lable1" ></asp:Label>
</asp:Panel>
4.活动
OnAjaxRequest
该事件在由客户端函数或服务器端方法AjaxRequest
触发时发生。
示例演示了AjaxRequest
来自客户端和服务器的触发。还定义了一个 HTML 输入按钮和一个标准 ASP.NET 按钮。HTML input按钮触发一个调用客户端的函数ajaxRequest()。ASP.NET 按钮触发一个服务器端OnClick
事件,该事件又调用该RaisePostBackEvent()方法。
//.NET
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
</telerik:RadAjaxManager>
<%-- 响应客户端点击input --%>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function clientClick() {
var ajaxManager = $find("<%= RadAjaxManager1.ClientID %>");
ajaxManager.ajaxRequest("client");
}
</script>
</telerik:RadCodeBlock>
<div>
<%-- 客户端就是请求一些服务的一方,服务端就是响应一些
服务请求的一方,客户端是调用方,服务端是被调用方。 --%>
<%-- ASP.NET按钮,触发一个服务器端Onclick事件, --%>
<asp:Button ID="btnServer" runat="server" Text="Make server AjaxRequest" OnClick="btnServer_Click" />
<%-- HTML input按钮,触发一个调用客户端的函数ajaxRequest() --%>
<input id="btnClient" type="button" value="Make client AjaxRequest" onclick="clientClick();" />
</div>
//C#
protected void btnServer_Click(object sender, EventArgs e)
{
RadAjaxManager1.RaisePostBackEvent("server");
}
protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
RadAjaxManager1.Alert("AjaxRequest raised from the " + e.Argument);
}