2013-10-11 40 views
0

我是C#編程中的新成員。我遇到了一個問題。問題在於。我有一個winform應用程序中的listview控件。 ListView有複選框。列表視圖的第一列包含來自數據庫的ID。C#根據與數組匹配的項目檢查listview複選框

我也有我寫這樣的

string selectCompany = "1,2,3,4"; 
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None); 

所有我想要做的是,如果在列表視圖的第一列中的任何值在上述數組的數組,我需要檢查該行。 這是如何實現的? 任何幫助將不勝感激。

更新 我到目前爲止的代碼是

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

@TimSchmelter,我已經期待這個答案。所有問題的常見答案,所有編程語言和每個人都知道的答案。我沒有要求一大堆代碼。只是一個提示對我來說已經足夠了,我說我在C#編程中相當新。 – WatsMyName

回答

2

試試這個:

if (companies.Contains(row["type_id"])){ 
    listViewItem.Checked = true; 
} 
+1

是的,這工作得很好。謝謝 – WatsMyName

0
((CheckBox)row.FindControl("YourCheckBoxIDHere")).Checked = true; 

是在你的代碼中缺少的代碼片段。

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++; 
} 
+0

我必須在我的'DataRow' foreach循環內使用這個循環? – WatsMyName

+0

據我所知,一個列表視圖不包含DataRow,除非你正在循環你的數據集。然後一個不同的方法比我提供的是必需的 –

+0

是的我m循環訪問數據集 – WatsMyName

相關問題