Getting CheckBoxList Item values

2019-02-16 16:38发布

I have a CheckBoxList which I'm populating with data. When I attempt to retrieve the checked items from the list I can only grab the item ordinal, I cannot get the value.

I've read that you can use Items[i].Value however when I try to do this I get an error stating that there is no extension method 'value'.

Here's the code I'm using to try and grab the information (note the GetItemText(i) actually only gives me the item position, not the text for the item)

   private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
        if (chBoxListTables.GetItemChecked(i))
        {
            string str = chBoxListTables.GetItemText(i);
            MessageBox.Show(str);

            //next line invalid extension method
            chBoxListTables.Items[i].value;
        }
    }
}

This is using .Net 4.0

Any thoughts would be appreciated...thanks

8条回答
不美不萌又怎样
2楼-- · 2019-02-16 16:55

You can try this:-

string values = "";
foreach(ListItem item in myCBL.Items){
if(item.Selected)
{
values += item.Value.ToString() + ",";  
}
}
values = values.TrimEnd(',');  //To eliminate comma in last.
查看更多
Explosion°爆炸
3楼-- · 2019-02-16 17:00

//Simple example code:

foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}
查看更多
Rolldiameter
4楼-- · 2019-02-16 17:01

This ended up being quite simple. chBoxListTables.Item[i] is a string value, and an explicit convert allowed it to be loaded into a variable. The following code works:

private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
          if (chBoxListTables.GetItemChecked(i))
        {
            string str = (string)chBoxListTables.Items[i];
            MessageBox.Show(str);
        }
    }
}
查看更多
做自己的国王
5楼-- · 2019-02-16 17:02

Instead of this:

CheckboxList1.Items[i].value;

Try This:

CheckboxList1.Items[i].ToString();

It worked for me :)

查看更多
beautiful°
6楼-- · 2019-02-16 17:02

You can initialize a list of string and add those items that are selected.

Please check code, works fine for me.

List<string> modules = new List<string>();

foreach(ListItem s in chk_modules.Items)
{
    if (s.Selected)
    {
         modules.Add(s.Value);
    }
}
查看更多
何必那么认真
7楼-- · 2019-02-16 17:03

to get the items checked you can use CheckedItems or GetItemsChecked. I tried below code in .NET 4.5

Iterate through the CheckedItems collection. This will give you the item number in the list of checked items, not the overall list. So if the first item in the list is not checked and the second item is checked, the code below will display text like Checked Item 1 = MyListItem2.

//Determine if there are any items checked. 
if(chBoxListTables.CheckedItems.Count != 0)  
{
    //looped through all checked items and show results.
    string s = "";
    for (int x = 0; x < chBoxListTables.CheckedItems.Count; x++)
    {
        s = s + (x + 1).ToString() + " = " + chBoxListTables.CheckedItems[x].ToString()+ ", ";
    }
    MessageBox.Show(s);//show result
}

-OR-

Step through the Items collection and call the GetItemChecked method for each item. This will give you the item number in the overall list, so if the first item in the list is not checked and the second item is checked, it will display something like Item 2 = MyListItem2.

int i;  
string s;   
s = "Checked items:\n" ;  
for (i = 0; i < checkedListBox1.Items.Count; i++)  
{  
   if (checkedListBox1.GetItemChecked(i))  
   {  
      s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n";  
   }  
}  
MessageBox.Show (s);

Hope this helps...

查看更多
登录 后发表回答