下面是我写的从数据库填写下拉列表的代码,我没有得到我错误的地方..帮助我找出并纠正我的错误。
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();
}
答案 0 :(得分:1)
您的代码非常接近 - 唯一的问题是这一行:
if (rec.Read())
添加到new ListItem()
集合时,您还可以使用Items
。您可以使用带有两个字符串的重载来设置文本和值。
这只会获得返回记录的第一行,而不是所有记录。你想要的是循环遍历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提供的替代方案也是一种有效的方法。
答案 1 :(得分:0)
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;