asp.net(vs2005)使用updatepanel控件详解

     最近做一个网站,里面涉及到级联的问题(如省-市,品牌-型号等), 我用的是DropDownList来实现的,设置父级的AutoPostBack属性为真.然后在它的SelectedIndexChanged()事件里写相应的代码,这样就能实现级联关系(当然这里要注意IsPostBack的问题).  做好之后用时发现一个非常不爽的问题,那就是每次都会刷新,这样的体验自已都感觉非常不爽(更不敢交给客户).所以就上网找一些关于无刷新级联的东东,东东真不少,有javascript ,ajrx, updatepanel等,关于这些区别可能上网查。

     由于是第一次用这些东东,而且项目周期所限,就后选择最简单的updatepanel.虽然很简单,但在这个过程中也有一些问题,特别对于像我这样完全没有接触过ajax的菜鸟了(刚开始连updatepanel在哪,怎么添加都不知道?)。呵呵费话已说了很多了,接下来我来说说我的整个过程.

      1、安装Ajax组件(这样最简单方便)。在百度输入(ASP.NET AJAX 1.0 下载)即可找到需要下载的软件。

            安装后将X:/Program Files/Microsoft ASP.NET/ASP.NET 2.0 Ajax Extensions/v1.0.61025
目录下的System.Web.Extensions.Design.dll文件加到项目的bin目录下,文件复制到网站bin目录
         安装了asp.net Ajax后会有三个dll文件

                                     System.Web.Extensions.Design.dll

                                     AjaxExtensionsToolbox.dll

                                     System.Web.Extensions.dll

         一般应该将这三个文件都添加到项目的bin目录下,要保险的话,全部复制进去吧

       2、添加引用。在解决方案视图窗口中,右击网站名称--添加引用--浏览。找到工程的bin目录选择System.Web.Extensions.Design.dll和System.Web.Extensions.dll.然后确定,完成引用的添加.

       3、把updatepanel添加到工具栏中. 右击工具栏空白处--选择项--浏览:找到工程bin目录并选择System.Web.Extensions.dll. 然后在上面的选择刚添加的工具(选择时要分清版本,不在选择3.5(假如你安装了。net3.5)),完成后在工具栏的标准中的最下方添加了两个控件ScriptManager和UpdatePanel

 

       到这一步就可以和使用控件没有什么区别了,但是我的项目中的无刷新级联没有效果--即安装好updatepanel后会出现不好用,导致随时都是整个页面的刷新. 

       上网找对了一些资料懂了一点点,知道由于我建立的不是Ajax的项目,所以无效,但可以改配置文件。如果没有改配置文件可以出错像("System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。)这样的错误.

       接下来让我们来看一下webconfig的修改吧!

       1、<assemblies></assemblies>之间加入 :<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  (如果没有这一句就加入)
       2、在文件的<system.web></system.web>配置节中加一段代码

       

我这里讲述的是updatepanel的使用及配置,对于它的原理网上很大大家可以上网,(其实我也没懂,因为我是个菜鸟). 对于updatepanel的属性等的设置有不明白的也可以上网查,但是要设置和要注意的地方我一般有红色标明了!

 

希望高手们指点,和我一样的菜鸟多交流!

 

 

 

 

 

<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>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

 

         到这里就可以正确的使用updatepanel控件了,且出现了我要的效果,呵呵,(对于我来说)不容易啊!小小乐一下!

 

接下我发个小例子让大家参考一下(说好听的,主要还是防止以后忘了,可以来看一眼)

                 (注意:   aspx页面加入 注册:
                       <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"Namespace="System.Web.UI" TagPrefix="asp" %>
)--其实拖完控件它自动注册了!

 

//在updatepanel使用之前一定要先加这个控件,且它的EnablePartialReadering = True         

<asp:ScriptManager id="ScriptManager1" runat="server">
</asp:ScriptManager>
 
<table style="background-image: url(../images/search.jpg); width: 950px; background-repeat: no-repeat; height: 58px">
   <tr valign="bottom">
         <td valign="middle" style="height: 27px" >
              <asp:TextBox ID="txtSearch" runat="server" Width="174px"></asp:TextBox></td>
         <td valign="middle" style="height: 27px" >
                //省份下拉列表
               <asp:DropDownList ID="ddlProvice" runat="server" Width="53px"             OnSelectedIndexChanged="ddlProvice_SelectedIndexChanged" Font-Size="14px" Height="23px"             AutoPostBack="True">
            </asp:DropDownList>
 
            //把要刷新的控件包含在updatepanel里面,尽量的少,这些就可以减少网络的传输        UpdateMode 属性设: Conditional
            <asp:UpdatePanel id="UpdatePanel1" runat="server">
                 <ContentTemplate>
                     <asp:DropDownList ID="ddlCity" runat="server" Width="61px" Font-Size="14px" Height="23px">
                     </asp:DropDownList>
               </ContentTemplate>
              
                 //触发器
                <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="ddlProvice" EventName="SelectedIndexChanged" />
                 </Triggers>
            </asp:UpdatePanel> 
            </td>
       </tr>
</table>
 
后台代码:
    
      //省份的相应事件
     protected void ddlProvice_SelectedIndexChanged(object sender, EventArgs e)
    {
        int pid = int.Parse(((DropDownList)sender).SelectedValue);
        if(pid==0)
        {
            ddlCity.Items.Insert(0, "<--城市-->");
            ddlCity.Items[0].Value = "0";
        }
        else
        {
            BindCity(pid);    //绑定函数
        }
    }
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值