1. Loop through all the datalist items.
2. Use FindControl method on datalist item to get the checkbox in discussion
3. Check if it is checked or not. In case it is, then use FindControl again to get the hidden label value.
Try!
UPDATE:
Try something like...
int count = dl.Items.Count;
for (int i = 0; i < count; i++)
{
Checkbox chk = dl.Items[i].FindControl("chkID") as Checkbox;
if(chk.Checked)
{
Label ID = dl.Items[i].FindControl("lblID") as Label;
string item = ID.Text;
}
}