自己做的一个 ddl 三级联动

以前也接触过三级联动,不过那个时候都是照搬照抄比人的,自己感觉不太好弄,也没动手做过。现在做这个项目由于需要这样一个东东,就自己动手做了一个

感觉还可以。

在aspx页面中加入这段代码:

<asp:DropDownList runat="server" ID="DDLSearch" OnSelectedIndexChanged="DDLSearch_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem Text="区域搜索" Value="0"></asp:ListItem>
    <asp:ListItem Text="职位搜索" Value="1"></asp:ListItem>
    </asp:DropDownList>
    <asp:Panel runat="server" ID="pArea">        //从这里的两个panel是要根据 上面的搜过内容交替显示的
        <asp:DropDownList ID="DDLAreaState" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DDLAreaState_SelectedIndexChanged" >
        </asp:DropDownList>
        <asp:DropDownList ID="DDLAreaCity" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DDLAreaCity_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:DropDownList ID="DDLAreaXq" runat="server">
        </asp:DropDownList>

</asp:Panel>
    <asp:Panel runat="server" ID="pPosition">
    <asp:DropDownList runat="server" ID="ddlPosFir" AutoPostBack="True" OnSelectedIndexChanged="ddlPosFir_SelectedIndexChanged"></asp:DropDownList>
    <asp:DropDownList runat="server" ID="ddlPosSec"></asp:DropDownList>&nbsp;
        </asp:Panel>

 

在aspx.cs页面中 加入这段代码

protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            pArea.Visible = true;
            pPosition.Visible = false;
            ddlAreaDataBind();
            ddlPosDataBind();
            DDLAreaCity.Items.Add(itemAdd("选择一个市或辖区"));//初始化的时候初始化默认项
            DDLAreaXq.Items.Add(itemAdd("选择一个县或辖区"));//初始化的时候初始化默认项
            ddlPosSec.Items.Add(itemAdd("选择一个职位"));//初始化的时候初始化默认项
        }
    }
    /// <summary>
    /// 数据库链接
    /// </summary>
    /// <param name="strSQL"></param>
    /// <returns></returns>
    protected DataSet sqlConnection(string strSQL)
    {
        string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();
        SqlConnection conn = new SqlConnection(strConn);
        conn.Open();
        SqlDataAdapter dr = new SqlDataAdapter(strSQL, conn);
        DataSet ds = new DataSet();
        dr.Fill(ds, "table");
        conn.Close();
        conn.Dispose();
        return ds;

    }
    #region //区域搜索相关数据

    protected void DDLSearch_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DDLSearch.SelectedItem.Value == "0")
        {
            pArea.Visible = true;
            pPosition.Visible = false;
            ddlAreaDataBind();
            DDLAreaCity.Items.Clear();
            DDLAreaXq.Items.Clear();
            DDLAreaCity.Items.Add(itemAdd("请选择一个市或辖区"));//添加一个默认项
            DDLAreaXq.Items.Add(itemAdd("请选择一个县或辖区"));//同上
        }
        else
        {
            pArea.Visible = false;
            pPosition.Visible = true;
            ddlPosFir.Items.Clear();
            ddlPosSec.Items.Clear();
            ddlPosDataBind();
            ddlPosSec.Items.Add(itemAdd("选择一个职位"));
        }
    }
 
    /// <summary>
    /// ddlareastate数据绑定
    /// </summary>
    protected void ddlAreaDataBind()
    {
        string strSQL = "";//这个是初始化时的sql语句
        DataSet ds = sqlConnection(strSQL);
        DDLAreaState.DataSource = ds.Tables[0].DefaultView;
        DDLAreaState.DataTextField = "area_state";
        DDLAreaState.DataValueField = "area_bh";
        DDLAreaState.DataBind();

        DDLAreaState.SelectedIndex = DDLAreaState.Items.IndexOf(DDLAreaState.Items.FindByValue("41"));//添加默认选项
        DDLAreaState.Items.Insert(0,new ListItem("选择一个省或直辖市","0"));
    }
    /// <summary>
    /// 为下拉菜单添加固定项
    /// </summary>
    /// <param name="strText"></param>
    /// <returns></returns>
    protected ListItem itemAdd(string strText)//动态添加DDL项
    {
        ListItem li = new ListItem();
        li.Text = strText;
        li.Value = "0";
        return li;
    }

protected void DDLAreaState_SelectedIndexChanged(object sender, EventArgs e)
    {
        DDLAreaCity.Items.Clear();
        DDLAreaXq.Items.Clear();
        if (DDLAreaState.SelectedItem.Value == "0")
        {
            ddlAreaDataBind();
            DDLAreaCity.Items.Add(itemAdd("选择一个市或辖区"));
            DDLAreaXq.Items.Add(itemAdd("选择一个县或辖区"));
        }
        else
        {
            string strSQL = "";//SQL语句
            DataSet ds = sqlConnection(strSQL);
            DDLAreaCity.DataSource = ds.Tables[0].DefaultView;
            DDLAreaCity.DataTextField = "area_city";
            DDLAreaCity.DataValueField = "area_bh";
            DDLAreaCity.DataBind();
            DDLAreaCity.Items.Insert(0, new ListItem("请选择一个市或辖区", "0"));
            DDLAreaXq.Items.Add(itemAdd("请选择一个县或辖区"));
        }
    }
    protected void DDLAreaCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        DDLAreaXq.Items.Clear();
        if (DDLAreaCity.SelectedItem.Value == "0")
        {
            DDLAreaXq.Items.Add(itemAdd("请选择一个县或辖区"));
        }
        else
        {
            string strSQL = "";
            DataSet ds = sqlConnection(strSQL);
            DDLAreaXq.DataSource = ds.Tables[0].DefaultView;
            DDLAreaXq.DataTextField = "area_xq";
            DDLAreaXq.DataValueField = "area_bh";
            DDLAreaXq.DataBind();
            DDLAreaXq.Items.Insert(0, new ListItem("请选择一个县或辖区", "0"));
        }
    }
    /// <summary>
    /// 职位搜索DDL数据绑定
    /// </summary>
    protected void ddlPosDataBind()
    {
        string strSQL = "";//SQL语句
        DataSet ds = sqlConnection(strSQL);
        ddlPosFir.DataSource = ds.Tables[0].DefaultView;
        ddlPosFir.DataTextField = "position_mc";
        ddlPosFir.DataValueField = "position_bh";
        ddlPosFir.DataBind();

        ddlPosFir.SelectedIndex = ddlPosFir.Items.IndexOf(ddlPosFir.Items.FindByValue("02"));//添加默认选项
        ddlPosFir.Items.Insert(0,new ListItem("选择一个类别","0"));

    }
    protected void ddlPosFir_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlPosSec.Items.Clear();
        if (ddlPosFir.SelectedItem.Value == "0")
        {
            ddlPosSec.Items.Add(itemAdd("选择一个职位"));
        }
        else
        {
            string strSQL = "";
            DataSet ds = sqlConnection(strSQL);
            ddlPosSec.DataSource = ds.Tables[0].DefaultView;
            ddlPosSec.DataTextField = "position_mc";
            ddlPosSec.DataValueField = "position_bh";
            ddlPosSec.DataBind();
            ddlPosSec.Items.Insert(0,new ListItem("选择一个职位","0"));
        }
    }

由于是初次写这个代码比较多 ,有点乱,待以后慢慢改进。这个只是测试用的所以数据绑定的部分都没有写公用函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值