如何在.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();
}

如何在.net中填充数据库下拉列表

你的代码非常接近-唯一的问题是这一行:

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;