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