0

我是 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++;
}

谢谢

4

3 回答 3

2

尝试这个:

if (companies.Contains(row["type_id"])){
  listViewItem.Checked = true;  
}
于 2013-10-11T10:37:52.987 回答
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;
    }
}

这将设置列表视图项的选中项

编辑:试试这个

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++;
}
于 2013-10-11T10:36:04.620 回答
0
((CheckBox)row.FindControl("YourCheckBoxIDHere")).Checked = true;

是您的代码中缺少的代码片段。

于 2013-10-11T10:30:02.863 回答