比方说表中
     building              foor
       1                    1
       1                    2
       1                    3
       1                    4
       2                    1
       2                    2
       2                    6
在一个下拉框显示
    1
    2
点击到1时,另一下拉框要出来   1
                          2
                          3
                          4
实现这样的功能同时,页面没有感觉在刷新的感觉
是不是得用ajax??具体怎么实现的

解决方案 »

  1.   

    使用2个downlist控件
    下面有个XXback那个选项要点上勾
      

  2.   

    用ASP.NET AJAX是显,下面代码测试通过.
    测试数据create table tddlTest
    (
    building int,
    foor int
    )insert tddlTest
    select 1,1
    union
    select 1,2
    union
    select 1,3
    union
    select 1,4
    union
    select 2,1
    union
    select 2,2
    union
    select 2,6
    页面代码<body>    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>    
        <div>
            <br />
            <asp:DropDownList ID="ddlFirst" runat="server" AutoPostBack="True" 
                onselectedindexchanged="ddlFirst_SelectedIndexChanged">
            </asp:DropDownList>
            &nbsp;DropDownList Test<br />
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:DropDownList ID="ddlSecond" runat="server">
                    </asp:DropDownList>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="ddlFirst" 
                        EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        
        </div>
        </form>
    </body>
    后台代码using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Data;public partial class AjaxTest : System.Web.UI.Page
    {    private const string conString = "Server=SZSOFT-SZZB\\SQLEXPRESS;database=office;uid=sa;pwd=abc_!123456;";    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 初始控件
                DataTable dt = GetFirstData();
                BindFirst(dt);
                ddlFirst_SelectedIndexChanged(null, null);
            }
        }    /// <summary>
        /// 选择改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlFirst_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlFirst.SelectedItem != null)
            {
                DataTable dt = GetSecondData(ddlFirst.SelectedItem.Value);
                BindSecond(dt);
            }
        }    /// <summary>
        /// 绑定第一个下拉控件
        /// </summary>
        /// <param name="dt"></param>
        private void BindFirst(DataTable dt)
        {
            ddlFirst.DataTextField = "building";
            ddlFirst.DataValueField = "building";
            ddlFirst.DataSource = dt;
            ddlFirst.DataBind();
        }    /// <summary>
        ///  绑定第二个下拉控件
        /// </summary>
        /// <param name="dt"></param>
        private void BindSecond(DataTable dt)
        {
            ddlSecond.DataTextField = "foor";
            ddlSecond.DataValueField = "foor";
            ddlSecond.DataSource = dt;
            ddlSecond.DataBind();
        }    /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private DataTable GetFirstData()
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = conString;
            con.Open();
            string sqlSelect = "Select building From tddlTest group by building";
            SqlDataAdapter adapter = new SqlDataAdapter(sqlSelect, con);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            return dt;
        }    /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private DataTable GetSecondData(string parentId)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = conString;
            con.Open();
            string sqlSelect = string.Format("Select foor From tddlTest where building='{0}'",parentId);
            SqlDataAdapter adapter = new SqlDataAdapter(sqlSelect, con);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            return dt;
        }}最后要却认下Web.config的<system.web>节点下有下面代码:<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>
      

  3.   

    <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>有什么作用
      

  4.   

    应该是初始化AJAX控件库吧,不然的话UpdatePanel 会报错
      

  5.   

    用UpdatePanel也有局部的刷新感觉哦
      

  6.   

    UpdatePanel里的东西刷新,跟服务器交互,刷新更新的内容,而不是提交整个页面.
    如果你不跟服务器打交道,可以用javascript在页面实现.