我试图在下拉列表中获取数据,但它不起作用。我不明白是什么问题。
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();
答案 0 :(得分:1)
您正在为下拉列表分配一个包含DataSet
个项目的DataRowView
。您的下拉列表(是System.Windows.Forms.ComboBox
吗?)不够聪明,无法从此DataSet
中提取实际值。而是使用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
语句而导致语句块过早离开,它们也会这样做。