我是C#编程的新手。我遇到了一个问题。问题是。我在winform应用程序中有listview控件。 Listview有复选框。列表视图的第一列包含来自数据库的ID。
我也有一个像这样写的数组
string selectCompany = "1,2,3,4";
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None);
我想要做的就是如果listview的第一列中的任何值都在上面的数组中,我需要检查该行。 怎么能实现这一目标? 任何帮助都将受到高度赞赏。
更新 我到目前为止的代码是
string selectCompany = "1,2,3,4";
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None);
foreach (DataRow row in company.Rows)
{
string[] rows = { row["type_id"].ToString(), row["type_name"].ToString()};
var listViewItem = new ListViewItem(rows);
lstCompanyType.Items.Add(listViewItem);
if (companies.Length > 0)
{
if (companies.Contains(row["type_id"]))
{
//i m JUST NOT SURE HOW TO CHECK LISTVIEW ITEMS THAT MATCHES THE ARRAY
}
}
serialno++;
}
由于
答案 0 :(得分:2)
试试这个:
if (companies.Contains(row["type_id"])){
listViewItem.Checked = true;
}
答案 1 :(得分:1)
首先,这不是您在C#中定义数组的方式。 正确的方法是
string[] array = {"1", "2", "3", etc.}
您需要获取ListView中的所有项目,然后遍历listview项目。
foreach(ListViewItem lvi in ListView.Items)
{
//for your "array" use
if(lvi.SubItems["key"].ToString() == selectCompany.Contains(lvi.SubItems["key"].ToString()))
{
lvi.Checked = true;
}
}
这将设置listview项目的选中项目
编辑: 试试这个
string selectCompany = "1,2,3,4";
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None);
foreach (DataRow row in company.Rows)
{
string[] rows = { row["type_id"].ToString(), row["type_name"].ToString()};
var listViewItem = new ListViewItem(rows);
if(selectCompany.Contains(row["type_id"].ToString()))
{
listViewItem.Checked = true;
}
lstCompanyType.Items.Add(listViewItem);
if (companies.Length > 0)
{
if (companies.Contains(row["type_id"]))
{
//i m JUST NOT SURE HOW TO CHECK LISTVIEW ITEMS THAT MATCHES THE ARRAY
}
}
serialno++;
}
答案 2 :(得分:0)
((CheckBox)row.FindControl("YourCheckBoxIDHere")).Checked = true;
代码中是否缺少代码片段。