Reputation: 2598
How to bind a CheckBoxList to a generic list object. This sample code should work for the purpose:
protected void Page_Load(object sender, EventArgs e)
{
// Works well with the datatable as a data source
//DataTable _entityList = new DataTable();
//_entityList.Columns.Add("Id", typeof(int));
//_entityList.Columns.Add("ProductName", typeof(string));
//_entityList.Rows.Add(new object[] { 1, "First" });
//_entityList.Rows.Add(new object[] { 2, "Second" });
// Doesn't work with the generic list as a data source
List<MyProduct> _entityList = new List<MyProduct>();
_entityList.Add(new MyProduct(1, "First"));
_entityList.Add(new MyProduct(2, "Second"));
cblProducts.DataSource = _entityList;
cblProducts.DataTextField = "ProductName";
cblProducts.DataValueField = "Id";
cblProducts.DataBind();
}
public class MyProduct
{
public int Id;
public string ProductName;
public bool selected;
public MyProduct(int id, string desc, bool slctd)
{
this.Id = id;
this.ProductName = desc;
this.selected = slctd;
}
public MyProduct()
{
// TODO: Complete member initialization
}
}
But it is throwing a run time exception:
DataBinding: 'Test.MyProduct' does not contain a property with the name 'ProductName'.
What am I missing? I tried google the topic but failed.
Upvotes: 2
Views: 7292
Reputation: 17600
Change your fields to properties:
public class MyProduct
{
public int Id { get; set; }
public string ProductName { get; set; }
public bool selected { get; set; }
...
}
Upvotes: 5