所以这里发生了什么事。当我按下事件button1
以从我的数据库中检索数据时,它会显示System.Data.DataRowView
。但是,当我再次按下button1
事件时,它会显示实际结果和正确的数据。我想知道如何通过单击按钮来显示实际数据
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"SQLCONNECTIONSTRING");
con.Open();
SqlCommand cmd = new SqlCommand("Select * from tbl_members", con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
SqlDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("FullName", typeof(string));
dt.Load(reader);
DataSet ds = new DataSet();
adapter.Fill(ds);
checkedListBox1.DisplayMember = "FullName";
checkedListBox1.ValueMember = "FullName";
checkedListBox1.DataSource = ds.Tables[0];
checkedListBox1.Enabled = true;
checkedListBox1.Refresh();
con.Close();
}
答案 0 :(得分:1)
试试这个..你不需要执行两次查询。
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"SQLCONNECTIONSTRING");
con.Open();
SqlCommand cmd = new SqlCommand("Select * from tbl_members", con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//SqlDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("FullName", typeof(string));
DataSet ds = new DataSet();
adapter.Fill(ds);
dt=ds.Tables[0];
checkedListBox1.DisplayMember = "FullName";
checkedListBox1.ValueMember = "FullName";
checkedListBox1.DataSource = ds.Tables[0];
checkedListBox1.Enabled = true;
checkedListBox1.Refresh();
con.Close();
}
答案 1 :(得分:0)
作业顺序不应该不同吗?
checkedListBox1.DataSource = ds.Tables[0];
checkedListBox1.DisplayMember = "FullName";
checkedListBox1.ValueMember = "FullName";
而不是
checkedListBox1.DisplayMember = "FullName";
checkedListBox1.ValueMember = "FullName";
checkedListBox1.DataSource = ds.Tables[0];