关于使用updatepanle后页面还会刷新的个人解决方法。

之间做了个页面,页面上放的控件有:两个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中,个人觉得放在外面比较方便,而且也能实现。哈。文笔不好。见谅。。

你可能感兴趣的:(update)