Why do you use DataBind? I would use the Items.AddRange
This worked for me (with extra testcode)
List<ListItem> result = new List<ListItem>();
for (int i = 0; i < 10; i++)
{
result.Add(new ListItem("t" + i.ToString(), i.ToString()));
}
CheckBoxList1.Items.AddRange(result.ToArray());
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
{
int id = Convert.ToInt32(item.Value);
// Other code omitted
}
}