之间做了个页面,页面上放的控件有:两个label/button/DropDownList/updatepanle/scriptManage,想要实现的功能是根据DropDownList选择的值来动态的更新lblDrp的值。
以下是我的代码:aspx
现在的时间是:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" Text=" 更新时间" />
<br />
<br />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>兔子</asp:ListItem>
<asp:ListItem>老虎</asp:ListItem>
<asp:ListItem>猴子</asp:ListItem>
</asp:DropDownList>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Labe2"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
=============
aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
protected void Button2_Click(object sender, EventArgs e)
{
Label2.Text = DateTime.Now.ToString();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Label2.Text = DropDownList1.SelectedItem.ToString();
}
==================如果单独复制上面的代码到文件中,会发现选择DropDownList后,页面并不是局部刷新,这时要在web.config中加入以下代码:
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
=============
如果加入后还是会出现刷新整个页面的情况,这时查找下web.config中是否有:<xhtmlConformance mode="Legacy"/>配置,把它删除就可以实现局部刷新的效果了,当时我在新建的项目中按以上步骤可以实现局部刷新,但是在另外的网站中并不能实现,通过删除web.config中的<xhtmlConformance mode="Legacy"/>后,发现正常了。查了MSDN,说xhtmlcomformance是配置符合 XHTML 1.0 的控件呈现,我也不懂为什么加入这个配置会导致updatepanle不能使用。
另外之前查网络上的资料说是出现会刷新整个页面的情况时,要把DropDownList控件和显示的都要放到ContentTemplate中,个人觉得放在外面比较方便,而且也能实现。哈。文笔不好。见谅。。