下面的程序实现省份与城市的Dropdownlist连动功能
ProvinceAndCity.aspx
<asp:DropDownList ID="DropDownListProvince" runat="server" OnSelectedIndexChanged="DropDownListProvince_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Value="0" Selected="true">-- 请选择 --</asp:ListItem>
<asp:ListItem Value="1">四川</asp:ListItem>
<asp:ListItem Value="2">江苏</asp:ListItem>
</asp:DropDownList>
城市:
<asp:DropDownList ID="DropDownListCity" runat="server"></asp:DropDownList>
ProvinceAndCity.aspx.cs
{
this.DropDownListCity.Items.Clear();
switch (this.DropDownListProvince.SelectedValue)
{
case "1":
this.DropDownListCity.Items.Add("成都");
this.DropDownListCity.Items.Add("绵阳");
break;
case "2":
this.DropDownListCity.Items.Add("南京");
this.DropDownListCity.Items.Add("苏州");
break;
default:
break;
}
}
这是传统的写法,当选中后,页面PostBack,在服务器端获取数据源(数据库),帮定页面控件,然后刷新用户显示。仅仅需要获得一小部分数据,却需要刷新整个页面,确实带来了不必要的开销。在Atlas出现之前,要实现不刷新,需要写很多的客户端脚本,新添加一个页面来实现Ajax,但是Atlas出现后,这一切就变得简单了。下面看看Atlas中应该怎么做:
1. 添加Atlas脚本
这个控件是注入一段Atlas的脚本,EnablePartialRendering表示允许页面局部刷新,这段脚本添加在需要局部刷新的控件之前。
2. 添加一个更新容器,将DropdownlistCity放到该容器中,并指明触发该更新的事件
<atlas:UpdatePanel ID="P1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownListCity" runat="server"></asp:DropDownList>
</ContentTemplate>
<Triggers>
<atlas:ControlEventTrigger ControlID="DropDownListProvince" EventName="SelectedIndexChanged" />
</Triggers>
</atlas:UpdatePanel>
ContentTemplate是需要更新的内容
Triggers表示什么时候触发
OK,一切就这么简单。
对Atlas,程序员们褒贬不一,有的人说这是一个前台的东西,是一个过渡产品,将来会被另外的技术所代替,生命力不会长久;有的人又说Atlas封装得非常好,可以轻松实现Ajax,省时省力,效果还不错。我想说的是:没有他,实现用户的一些界面上的需求需要花掉大量的精力,人的精力是有限的,多把精力放到业务上而不是技术层面上,有利于开发出高质量的软件来。是不是好东西,用了才知道。