我有一个检查列表框绑定了一些数据源,我将valueMember分配给某个ID? 现在,checkedlist框被绑定,我有另一个数据,我需要通过它来捕获每个id,如果有一些coulmn并且想要在checkedlist框项目的值成员值中检查它,如果两者匹配,则将检查项目。我做了以下但无法选中复选框。 你能帮我解决这个问题吗?
private void catCmb_SelectedIndexChanged(object sender, EventArgs e)
{
if (mode == "EDIT")
{
custOptionChkList.DataSource = cDressing.GetAllDressingDetailByCatID(14);
custOptionChkList.DisplayMember = "Description";
custOptionChkList.ValueMember = "CatID";
DataTable dt = objCFreeCust.GetAllFreeCustomizationItem(currProductID, custCmb.SelectedIndex);
foreach (var ListItem in custOptionChkList.Items)
{
DataRowView drv = ListItem as DataRowView;
int id = Convert.ToInt16(drv["CatID"]);
foreach (DataRow dr in dt.Rows)
{
if (Convert.ToInt16(dr["CustomizationId"]) == id)
{
//here i need to check the item's check box from checkedboxlist
}
}
}
}
}
答案 0 :(得分:2)
您必须使用SetItemChecked
的{{1}}方法。
CheckedListBox
或int index = 0; //to keep track of each item index
foreach (var ListItem in custOptionChkList.Items)
{
DataRowView drv = ListItem as DataRowView;
int id = Convert.ToInt16(drv["CatID"]);
foreach (DataRow dr in dt.Rows)
{
if (Convert.ToInt16(dr["CustomizationId"]) == id)
{
custOptionChkList.SetItemChecked(index, true); //true means set it to checked
}
}
index++;
}
循环:
for
答案 1 :(得分:1)
您好,请试试这个..
如果你要使用Linq到Dataset然后使用第一种方法将数据表转换为AsEnumerable以使用linq进行查询,或者只是简单地使用select数据表的方法,如第二个approch所示。
foreach (ListItem item in custOptionChkList.Items)
{
if (dt.AsEnumerable().Any(row => row.Field<String>("CustomizationId").Equals(item.Value)))
{
item.Selected = true;
}
}
OR
foreach (ListItem item in custOptionChkList.Items)
{
var foundid= dt.Select("CustomizationId = '" + item.Value + "'");
if (foundid.Length != 0)
{
item.Selected = true;
}
}