如何在.net中填充数据库下拉列表
本文关键字:填充 数据库 下拉列表 net | 更新日期: 2023-09-27 18:05:09
下面是我写的代码,从数据库中填充下拉列表,我没有得到我做错的地方……帮助我找出并纠正我的错误。
void filldistrict()
{
DropDownList4.Items.Clear();
DropDownList4.Items.Add("--District--");
String q="select * from DLIST";
SqlCommand cmd=new SqlCommand(q,cn);
SqlDataReader rec = cmd.ExecuteReader();
if (rec.Read())
DropDownList4.Items.Add(rec.getValue(1).ToString);
rec.Close();
}
你的代码非常接近-唯一的问题是这一行:
if (rec.Read())
在添加到Items
集合时也可以使用new ListItem()
。你也可以使用接受两个字符串的重载方法来设置文本和值。
只会得到返回记录的第一行,而不是全部。你想要的是循环遍历rec
中的记录,像这样:
void filldistrict()
{
DropDownList4.Items.Clear();
DropDownList4.Items.Add("--District--");
String q="select * from DLIST";
SqlCommand cmd=new SqlCommand(q,cn);
using (SqlDataReader rec = cmd.ExectueReader())
{
while (rec.Read())
{
DropDownList4.Items.Add(new ListItem(rec.GetValue(1).ToString()));
}
}
}
请注意,我对阅读器使用了using
块,因此在退出块时它会自动关闭。我也建议对你的SqlConnection
做同样的事情。
Ali提供的替代方法也是一种有效的方法。
SqlConnection sql_cnt=new SqlConnection("connectionString");
SqlCommand sql_cmd=new SqlCommand("select * from DLIST",sql_cnt);
Dataset dt_data=new Dataset();
SqlDataAdapter sql_adp=new SqlDataAdapter(cmd);
try
{
sql_cnt.Open();
sql_adp.Fill(dt_data);
sql_cnt.Close();
}
catch(Exception err)
{
//Do something;
}
DropDownList4.ValueMember="the name of the field which you want to be shown in dropdown list";
DropDownList4.DataSource=dt_data;