2011-06-29 41 views
1

上午使用下面的代碼綁定checkedlistbox贏得form.I想獲取檢查項目的值成員在checkedlistbox?如何在checkedlistbox窗口控件中獲取checked項目的值成員?

listCollection = new List<ListItem>(); 
      listCollection.Add(new ListItem { text = "Manufacturer", value = "1" }); 
      listCollection.Add(new ListItem { text = "Dealer", value = "2" }); 
      listCollection.Add(new ListItem { text = "Distributor", value = "3" }); 
      listCollection.Add(new ListItem { text = "Trader", value = "4" }); 
      listCollection.Add(new ListItem { text = "Service Provider", value = "5" }); 
      chkListCategory.DataSource = listCollection; 
      chkListCategory.DisplayMember = "text"; 
      chkListCategory.ValueMember = "value"; 

回答

3

我不知道什麼是ListItem,但我想這是一個類,它是看起來像:

public class ListItem 
{ 
    public string Text; 
    public object Value; 

    public ListItem(string text, object value) 
    { /*...*/ } 
} 

所以,改變DisplayMember = "text";"Text"ValueMember = "value";"Value"

chkListCategory.DisplayMember = "Text";//"text"; 
chkListCategory.ValueMember = "Value";//"value"; 

顯示文字a牛逼的用戶界面將是 「製造商,經銷商,分銷商,...」

,值將是 「1,2,3,...」

獲取選中項值的成員:

朋友檢查項目的值:

//first checked item. 
var value = (chkListCategory.CheckedItems[0] as ListItem).Value; 

//all checked items. 
foreach (var value in chkListCategory.CheckedItems) 
{ 
    Console.WriteLine((value as ListItem).Value); 
} 

//value at any index in the chkListCategory: 
var value = (chkListCategory.Item[index] as ListItem).Value; 
-3
foreach(DataRowView view in chkListCategory.CheckedItems) 
{ 
    Console.WriteLine(view[chkListCategory.ValueMember].ToString()); 
} 
+0

無法將'ListItem'轉換爲'DataRowView'。 – InBetween

0

綁定CheckedListBOx或任何其它控制與displaymember和valuemember很簡單,你只需要指定控件的DataSource屬性以及displaymember和valuemember。

Following is working code 100 % work for me i have tested: 

/* checkedlistbox bindig code */ 

DataSet ds = new DataSet(); 

string strChechboxlist = "select Subject_ID as code, SubjectName as Display from dbo.Mst_Subject_Detail"; 

/* filldataset() is function i have created to return dataset. */ 
ds = dc.FillDataSet(strChechboxlist); 
if (ds.Tables[0].Rows.Count > 0) 
{ 
checkedListBox1.DataSource = ds.Tables[0]; 
checkedListBox1.DisplayMember = "Display"; 
checkedListBox1.ValueMember = "code"; 

} 

/* for fetching valuemember or displaymember from checkedlistbox */ 


for(int i = 0; i < checkedListBox1.CheckedItems.Count; i++) 
{ 

/*Now with the following code we can get valemember and displaymember as per your requirement you can store in table. */ 
DataRow r; 
r = ((DataRowView)this.checkedListBox1.CheckedItems[i]).Row; 
string val = (r[this.checkedListBox1.ValueMember]).ToString(); 
string dis = (r[this.checkedListBox1.DisplayMember]).ToString(); 
r = null; 

} 

注: - 我附上的代碼

0

這裏工作演示是代碼從數據庫中獲取一些記錄,並把這些在CheckedListBox

SqlCommand cmd = new SqlCommand(@"SELECT Code, GenericName FROM tbl_Item", Connection); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     chklItems.DataSource = null; // chklItems is a CheckedListBox 
     if (chklItems.Items.Count > 0) 
      chklItems.Items.Clear(); 
     chklItems.DataSource = dt; 
     chklItems.DisplayMember = "GenericName"; 
     chklItems.ValueMember = "Code"; 


獲得檢查項目的價值成員

for (int i = 0; i < chklItems.CheckedItems.Count; i++) 
     { 
      string code = ((DataRowView)chklItems.CheckedItems[i]).Row["Code"].ToString(); 
     } 
相關問題