ListBox控件显示分类如何实现三级联动

写asp.net程序的时候,用ListBox控件实现数据库中分类的三级显示,而且要实现选择第一级的时候,后面的两级(多级也可以)实现联动。
ListBox分别为ListBox1、ListBox2、ListBox3
如果只是简单的设置这三个ListBox的SelectedIndexChanged事件的处理程序,那么只能实现相邻的两级之间的联动。为了实现三级联动,需要使用一下方法:
首先配置三个数据源控件:SqlDataSource1、SqlDataSource2、SqlDataSource3。
在Aspx文件的源代码试图,配置好这三个数据源控件的ConnectionString属性。配置第一个ListBox:ListBox1的SqlDataSource:SqlDataSource1的SelectCommand属性,其余两个数据源的SelectCommand属性则不要配置,留作以后由程序配置。
配置ListBox1的SelectedIndexChanged事件:
  1.         protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
  2.         {
  3.             Path.Text = ListBox1.SelectedItem.Text;
  4.             SqlDataSource2.SelectCommand = "select * from [category] where fatherid=" + ListBox1.SelectedValue;
  5.             ListBox2.DataSource = SqlDataSource2;
  6.             ListBox2.DataValueField = "id";
  7.             ListBox2.DataTextField = "name";
  8.             ListBox2.DataBind();            
  9.         }
在这个事件中给ListBox2做了数据绑定。
然后再在ListBox2的DataBound()事件中,给ListBox3做数据绑定,这样就实现了三级联动:
  1.         protected void ListBox2_DataBound(object sender, EventArgs e)
  2.         {
  3.             SqlDataSource3.SelectCommand = "select * from [category] where fatherid=" + ListBox2.Items[1].Value;
  4.             ListBox3.DataSource = SqlDataSource3;
  5.             ListBox3.DataValueField = "id";
  6.             ListBox3.DataTextField = "name";
  7.             ListBox3.DataBind();
  8.         }
但是这时,只有单击了ListBox1的选项的时候,ListBox3才会联动,还需要配置当单击ListBox2的时候,ListBox3也要联动,这就需要配置ListBox2的SelectedIndexChanged()事件的处理程序:
  1.         protected void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
  2.         {
  3.             Path.Text = ListBox1.SelectedItem.Text + ListBox2.SelectedItem.Text;
  4.             SqlDataSource3.SelectCommand = "select * from [category] where fatherid=" + ListBox2.SelectedValue;
  5.             ListBox3.DataSource = SqlDataSource3;
  6.             ListBox3.DataValueField = "id";
  7.             ListBox3.DataTextField = "name";
  8.             ListBox3.DataBind();
  9.         }
这样就可以实现完美的三级联动了。

里面的SelectCommand字符串的内容以及要绑定的字段需要配合相应的数据库做改变。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值