2012-10-04 75 views
1

如何設置CheckBoxList值與我的數據庫中存儲的值? 我嘗試過使用datareader,但它不起作用,我不知道爲什麼。如何用我的數據庫中的值填充我的CheckBoxList?

我的代碼:

cmd = new SqlCommand("SELECT [SeatID], [Flag] FROM [SeatingPlan] WHERE ([SectionID] = 1)", con); 
dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    for (int i = 0; i < 15; i++) 
    { 
     if (dr.GetString(1).Equals("true")) 
     { 
      chkBoxDaysList.Items[i].Selected = true; 
      chkBoxDaysList.Items[i].Enabled = false; 
     } 
    } 
} 
+0

你在哪裏打開你的連接對象「con.Open();」 ? – chridam

+0

循環做什麼? – inspite

+0

定義「它不起作用」。我在while循環中看到了一個可疑的循環。 – mbm

回答

3

你應該使用數據適配器,而不是使用數據讀取器。

並且像這樣綁定它。

chkBoxDaysList.DataSource = tempds.Tables(0) 
chkBoxDaysList.DataTextField = "SeatID" 
chkBoxDaysList.DataValueField = "Flag" 
chkBoxDaysList.DataBind() 
+0

嗨!我使用數據適配器,它運作良好。謝謝您的回答。但我仍然不知道如何根據數據庫中的值預先選擇複選框。我的意思是如果字段標誌爲「真」,請選擇頁面加載中的複選框。 –

+1

{ \t DataSet ds = new DataSet(); \t const string sqlstr =「SELECT [SeatID],[Flag] FROM [SeatingPlan] WHERE([SectionID] = 1)」; \t SqlDataAdapter da = new SqlDataAdapter(sqlstr,_con_Master); \t da.Fill(ds); \t chkBoxDaysList.DataValueField =「SeatID」; \t chkBoxDaysList.DataTextField =「SeatID」; \t chkBoxDaysList.DataSource = ds.Tables(0); \t chkBoxDaysList.DataBind(); \t Int32 i = 0; \t的foreach(在ds.Tables的DataRow RW(0).Rows){ \t \t如果(rw.Item(1)的ToString()。修剪()== 「真」){ \t \t \t chkBoxDaysList.Items (i).Selected = true; \t \t \t chkBoxDaysList.Items(i).Enabled = false; \t \t} \t \t i = i + 1; \t} } –

+0

現在運行良好。謝謝你一百萬。 –

相關問題