2014-02-18 58 views
0

所以这里是最新情况。当我按事件button1从我的数据库检索数据时,它显示System.Data.DataRowView。但是当我再次按下button1事件时,它会显示实际结果和正确的数据。我想知道如何在短短点击一个按钮的解决这个问题,以显示实际数据有问题填充我的checkedListBox

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

不应该分配的顺序有所不同呢?的

checkedListBox1.DataSource = ds.Tables[0]; 
checkedListBox1.DisplayMember = "FullName"; 
checkedListBox1.ValueMember = "FullName"; 

代替

checkedListBox1.DisplayMember = "FullName"; 
checkedListBox1.ValueMember = "FullName"; 
checkedListBox1.DataSource = ds.Tables[0]; 
+0

OMG,我没有看到,正在添加一个THX ..男人!你帮我节省了时间。如何改变这个帖子解决或什么? – user3322369

+0

你应该能够将我的答案标记为已接受,这就是Stack Overflow的方式) – Kaerber

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

}