2013-05-07 55 views
2

我在我的c#應用程序中顯示數據庫中現有項目的CheckedListBox。現在,我要檢查每個供應商提供的物品。以下是我迄今爲止所做的。基於數據庫數據檢查CheckedBoxList中的項目

string sel_supplied = "SELECT * FROM item_supplier WHERE supplier_id='" + hid_supid.Text + "'"; 
MySqlCommand cmd_supplied = new MySqlCommand(sel_supplied, Class_Connection.conn); 

try 
{ 
    MySqlDataReader rdr_supplied = cmd_supplied.ExecuteReader(); 

    while (rdr_supplied.Read()) 
    { 
     MessageBox.Show("Item: " + rdr_supplied["item_id"]); 
     int i=0; 

     foreach (DataRowView row in chklist_items.Items) 
     {        
      //MessageBox.Show(row[chklist_items.ValueMember].ToString()); 
      if (row[chklist_items.ValueMember].ToString() == rdr_supplied["item_id"].ToString()) 
      { 
       chklist_items.SetItemChecked(i, true); 
      } 
      i++; 
     }       
    } 
    rdr_supplied.Close(); 
} 
catch (MySqlException ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

但代碼生成異常說,列表正在被更改(作爲檢查運行時)和枚舉器不能用於更改列表。

任何幫助表示讚賞,請。

回答

2

您正在嘗試通過foreach循環更改您正在迭代的集合,這是不允許的,您可以使用for循環代替。

for(int i=0;i < chklist_items.Items.Count; i++) 
{        
    //MessageBox.Show(row[chklist_items.ValueMember].ToString()); 
    DataRowView row = (DataRowView)chklist_items[i]; 
    if (row[chklist_items.ValueMember].ToString() == rdr_supplied["item_id"].ToString()) 
    { 
     chklist_items.SetItemChecked(i, true); 
    }  
}       
+0

我曾經有過這樣的想法。但是,你能告訴我如何在這種情況下獲得數據? – 2013-05-07 10:17:53

+0

chklist_items.Items [i]會給你行 – Adil 2013-05-07 10:18:55

+0

Thanks @Adil。但它不起作用。 – 2013-05-07 10:33:05

相關問題