如何在.net中填写数据库中的dropdownlist

时间:2014-05-25 19:54:22

标签: c# sql .net

下面是我写的从数据库填写下拉列表的代码,我没有得到我错误的地方..帮助我找出并纠正我的错误。

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();
}

2 个答案:

答案 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;