C# 将SQL结果循环到下拉列表中

C# 将SQL结果循环到下拉列表中,c#,asp.net,loops,html.dropdownlistfor,C#,Asp.net,Loops,Html.dropdownlistfor,有人能帮我用C#循环填充ASP:DropDownList吗。我使用以下代码将数据绑定到下拉列表。但是,第一个结果不会填充到下拉列表中。应该有3个,但是下拉列表中只有2个 任何帮助都很好 SqlDataReader dr; dr = sqlcmd.ExecuteReader(); dropdown.DataSource = dr; while (dr.Read()) { dropdown.Da

有人能帮我用C#循环填充ASP:DropDownList吗。我使用以下代码将数据绑定到下拉列表。但是,第一个结果不会填充到下拉列表中。应该有3个,但是下拉列表中只有2个

任何帮助都很好

        SqlDataReader dr;
        dr = sqlcmd.ExecuteReader();
        dropdown.DataSource = dr;

        while (dr.Read())
        {
            dropdown.DataValueField = "ID";
            dropdown.DataTextField = "Description";
            dropdown.DataBind();
        }

由于要将数据读取器绑定到下拉列表,因此不需要显式地循环它(对
dr.Read()
的调用实际上正在吞噬第一个元素)

试试这个:

SqlDataReader dr = sqlcmd.ExecuteReader();
dropdown.DataSource = dr;
dropdown.DataValueField = "ID";
dropdown.DataTextField = "Description";
dropdown.DataBind();
更新

要添加默认项,请在上述代码后执行此操作:

dropdown.Items.Insert(0, new ListItem("Please Select",""));
而不是

dropdown.DataValueField = "ID";
dropdown.DataTextField = "Description";
使用


有没有办法在下拉列表中显示“请选择”选项。它正被数据绑定覆盖。@claw:将其添加到答案中
dropdown.DataValueField = dr["ID"].ToString();
dropdown.DataTextField = dr["Description"].ToString();