I have this DataTable
with the following structure:
ID | VALUE
----------------
1 | Item 1
2 | Item 2
3 | Item 3
And I display the values from the DataTable
into a CheckedListBox
control by adding each row as an item.
But how can I include the ID?
Is there "DisplayMember" and "ValueMember" like Properties for CheckedListBox control?
Well yes, there are DisplayMember
and ValueMember
properties on CheckedListBox
, although the docs for ValueMember
claim it's "not relevant to this class".
Here's a quick example showing DisplayMember
working:
using System;
using System.Drawing;
using System.Windows.Forms;
class Test
{
static void Main()
{
CheckedListBox clb = new CheckedListBox {
DisplayMember = "Foo",
ValueMember = "Bar",
Items = {
new { Foo = "Hello", Bar = 10 },
new { Foo = "There", Bar = 20 }
}
};
Form f = new Form
{
Controls = { clb }
};
Application.Run(f);
}
}
Also note that the docs state:
You cannot bind data to a CheckedListBox. Use a ComboBox or a ListBox for this instead.
For more information, see How to: Bind a Windows Forms ComboBox or ListBox Control to Data.
Given the above code which works, presumably it's talking about more advanced data binding, using DataSource
?
The DataSource, DisplayMember and ValueMember properties are available for this control but they are not displayed in the IntelliSense: MSDN
You should be able to use them though.
Yes there are 'display member' and 'value member' properties in CheckedListBox.
You can set the properties as you do in combobox:
public void PopulateListBox(System.Windows.Forms.CheckedListBox lb, string displayMember, string valueMember, DataTable data)
{
lb.DataSource = data; // where data is the datatable. datatable filled up with //data fetched from database.
lb.ValueMember = valueMember;
lb.DisplayMember = displayMember;
}
The french documentation say : Cette propriété ne s'applique pas à cette classe.
"This property does not apply for this class".
This little line of text is not visible in the us documentation...