2010-01-29 33 views
1

我已經使用Display Member和Vlaue Member填充了一個CheckedListBox綁定DataSource。 我已經使用關係表在數據庫中保存了checkedValues的值。 我需要重新填充checkedListbox得到檢查哪個值之前檢查(保存)。我已經完成了第一步。但在第二步中,我無法獲得項目的索引,以便比較關係表來檢查它們。CheckedListBox在C#.NET中重新生成問題

按照我的代碼到CheckedListBox綁定:

private void FillCheckedListBox (CheckedListBox chkListBox, string sSql, string displayMember, string valueMember) 
     { 
      try { 
       SqlConnection con = new SqlConnection(DaoCodeGCommon.GetConstring()); 
       con.Open(); 
       DataTable accTable = new DataTable(); 
       SqlCommand cmd = new SqlCommand(sSql, con); 
       SqlDataAdapter adpObj = new SqlDataAdapter(cmd); 
       accTable.TableName = "tbl"; 
       adpObj.Fill(accTable); 
       con.Close(); 
       chkListBox.DataSource = accTable; 
       chkListBox.ValueMember = valueMember; 
       chkListBox.DisplayMember = displayMember; 
      } 
      catch (Exception ex) { 

       throw ex; 
      } 
     } 

有什麼辦法重新填充checkedListBox?

+5

「我要求郵寄我給在[email protected]解決方案事先我謝謝。」一些價值 - 爲什麼如果這個問題發生在這個論壇上的其他人,他們將不知道如何解決這個問題,因爲有人郵寄給你一個解決方案?不要通過電子郵件告訴人們你需要解決方案。如果有解決方案,應該在這裏發佈。 – JonH 2010-01-29 17:32:48

+0

@Farazi:我要離開@ JonH的評論作爲我編輯的解釋。 – 2010-01-29 17:45:36

回答

0

如果您有數據庫中的狀態,並且您正在從數據庫中提取數據,則可以輕鬆地重新加載複選框列表。

例如假設您加載一個複選框列表帶有某種讀者:

chkUsers.DataSource = reader; 
chkUsers.DataTextField = "YourTextFieldToView"; 
chkUsers.DataValueField = "YourValueFieldToHide"; 
chkUsers.DataBind(); 

所以,現在你已經加載的檢查列表框,現在你需要把複選框開/關。

for(int i =0; i< chkUsers.Items.Count-1; i++) 
{ 
    if(dbVal == chkUsers.Items(i).Value) 
    { 
    chkUsers.Items(i).Selected = dbVal; 
    } 
    } 

在這種情況下dbVal可以在閱讀器或數據集或數據表等