现在的位置: 首页 > 综合 > 正文

异步交互框架

2013年11月04日 ⁄ 综合 ⁄ 共 1434字 ⁄ 字号 评论关闭

    去年用了很长时间,学习Ajax,已经很长时间没有用过了,而且这块儿的实践并不多。这次借项目机会,重新温习,深化学习。

    Ajax的一个核心是局部刷新,这里先回顾一下局部刷新的框架:

<asp:UpdatePanel ID="UpdatePanelResult" runat="server" UpdateMode="Conditional">
	<ContentTemplate>
		<table style="margin-top: 3px" width="100%">
			…………
			…………
		</talbe>
	</ContentTemplate>
	<Triggers>
		<asp:AsyncPostBackTrigger ControlID="btnQuery" EventName="Click"></asp:AsyncPostBackTrigger>
		<asp:PostBackTrigger ControlID="btnUpLoad" />
	</Triggers>
</asp:UpdatePanel>


使用方法:

将要更新的区域,放到UpdatePanel的<ContentTemplate>中,然后将触发更新的控件ID和事件名,放到<Triggers>区域中,也就是给ControlID和 EventName赋值的过程,这里需要注意的是,这里的事件名,是asp.ent页面中,去掉On后的函数名。如:

 <asp:Button ID="btnUpLoad" OnClick="btnUpLoad_Click" runat="server" Text="上传"></asp:Button>

只需要写上EventName="Click"即可,如果触发该区域更新的有多个命令按钮,且都在他们的单击事件中触发,那么直接在后面追加填写即可,如:

<Triggers>
      <asp:AsyncPostBackTrigger ControlID="btnQuery" EventName="Click"></asp:AsyncPostBackTrigger>
      <asp:PostBackTrigger ControlID="btnUpLoad" />
      <asp:PostBackTrigger ControlID="btnDel" />
 </Triggers>


在来回顾一下UpdatePanel的两个重要属性:UpdateMode和ChildrenAsTriggers之间的关系:
UpdateMode设置为Always,则不管是页面中任何控件引发的事件,都会导致UpdatePanel进行更新。ChildrenAsTriggers="false",阻止自动更新。
两者是一个项目矛盾的关系。UpdateMode=Always, ChildrenAsTriggers=false这种组合是不行的,如果ChildrenAsTriggers=false,则UpdateMode必须设置为conditional。
AsyncPostBackTrigger属性:不在UpdatePanel区域中的控件引发更新:
 <Triggers>
 	<asp:AsyncPostBackTrigger ControlID="rbtnFailure" EventName="CheckedChanged" />
   	<asp:AsyncPostBackTrigger ControlID="rbtnSucess" EventName="CheckedChanged" />
 </Triggers>


抱歉!评论已关闭.