在asp.net控件中,有一些控件是可以支持绑定数据库的,比如dropdownlist、listbox、checkboxgroup、radiobuttnlist。这些控件通过绑定数据库,来显示相应的数据。
在实际的项目中,会有这样的需求,比如在dropdownlist绑定了数据库以后,选择相应的内容,在listbox中就会显示对应内容下的具体条目。比如:在dropdownlist中绑定数据库中所有的省,当选择某个省以后,就会在listbox中出现对应省的城市。这就是两级联动。
下面来介绍一下用到的这两个控件(介绍代码实现中用到的属性和事件):
dropdownlist控件介绍
dopdownlist控件用于创建下列列表,使用数据绑定来指定要显示的项列表。
属性:
DataSource:绑定的数据源。
DataTextField:显示数据文本字段。
DataValueField:显示数据值字段。
selectedvalue:选定项的值。
事件:
SelectedIndexChanged:当已选择的索引发生改变的事件
listbox控件介绍
listbox控件用于创建单选或多选的列表控件,也是用来显示列表数据的控件。
下面是具体的代码实现:
WebForm1.aspx:页面的控件
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddpro" runat="server" AutoPostBack="True" Height="16px" OnSelectedIndexChanged="ddep_SelectedIndexChanged" Width="143px">
</asp:DropDownList>
<asp:ListBox ID="lcity" runat="server" AutoPostBack="True" Height="164px" Width="296px"></asp:ListBox>
</div>
</form>
WebForm1.aspx.cs:服务器代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//在dropdownlist中显示数据库中的省
SqlConnection con = db.createdb();
con.Open();
SqlCommand cmd = new SqlCommand("select * from T_pro",con);
SqlDataReader sdr = cmd.ExecuteReader();
this.ddpro.DataSource = sdr; //绑定数据源
this.ddpro.DataTextField = "proName"; //显示数据文本
this.ddpro.DataValueField = "proID";//显示数据值字段
this.ddpro.DataBind();
sdr.Close();
con.Close();
}
}
protected void ddpro_SelectedIndexChanged(object sender, EventArgs e)
{
lcity.Items.Clear();
SqlConnection con = db.createdb();
con.Open();
SqlCommand cmdemp = new SqlCommand("select * from emp where depID=" + this.ddpro.SelectedValue, con);
SqlDataReader sdrcity = cmdemp.ExecuteReader();
while (sdrcity.Read())
{
this.lcity.Items.Add(new ListItem(sdrcity.GetString(1), sdrcity.GetInt32(0).ToString())); //向listbox中添加对应的省的城市名
}
sdrcity.Close();
con.Close();
}
}
db类:连接数据库
public class db
{
public db()
{ }
public static SqlConnection createdb()
{
SqlConnection con = new SqlConnection("server=yiqing-pc;database=pro;uid=sa;pwd=....;");
return con;
}
}
总结
记得去年测试考试系统中,就用到了两级联动,当时还在想用什么思路去做,现在也能算是实现两级联动的简单例子了,但是这种简单例子更容易表现出两级联动的原理。在以后的学习中,还要有更多的关于这方面体会和收获。