C# 为什么我的下拉列表显示“System.Data.DataRowView”而不是实际值?

C# 为什么我的下拉列表显示“System.Data.DataRowView”而不是实际值?,c#,C#,我试图在下拉列表中获取数据,但它不起作用。我不明白出了什么问题 string connString = @" Data Source=(LocalDB)\v11.0;AttachDbFilename='C:\Users\oshri\Documents\Stock scores.mdf';Integrated Security=True;Connect Timeout=30"; string queryLecturer = "select name_student from student"; S

我试图在下拉列表中获取数据,但它不起作用。我不明白出了什么问题

string connString = @" Data Source=(LocalDB)\v11.0;AttachDbFilename='C:\Users\oshri\Documents\Stock scores.mdf';Integrated Security=True;Connect Timeout=30";
string queryLecturer = "select name_student from student";
SqlConnection conn = new SqlConnection(connString);
//SqlCommand cmdL = new SqlCommand(queryLecturer, conn);
conn.Open();
//SqlCommand SQLCommand = new SqlCommand();
//cmdL.CommandType = CommandType.Text;
//SQLCommand.CommandText = queryLecturer;
//conn.Close();
SqlDataAdapter adapter = new SqlDataAdapter(queryLecturer, conn);
adapter.Fill(subjects);

DropDownListID.DataSource = subjects;
DropDownListID.DataBind();

DropDownListID.DataBind();  
conn.Close();
您正在将包含DataRowView项的数据集分配给下拉列表。您的下拉列表是System.Windows.Forms.ComboBox吗?不够聪明,无法从该数据集中提取实际值。相反,使用SqlDataReader读取字符串值并将其添加到列表中,您可以将其用作下拉列表的数据源

string connString = @"Data Source=...";
string queryLecturer = "select name_student from student";
using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand(queryLecturer)) {
    conn.Open();
    using (SqlDataReader reader = cmd.ExecuteReader()) {
        var list = new List<string>();
        while (reader.Read()) {
            list.Add(reader.GetString(0)); // 0 is the column index.
        }
        DropDownListID.DataSource = list;
    }
}

using语句会自动关闭连接,并在语句块末尾处置资源。即使由于异常或break或return语句而过早地保留语句块,它们也会这样做。

DropDownstid是什么类型的控件?这是Winforms应用程序吗?WEB FORMS/MVC