2013-05-18 27 views
1

我有一組數據的DataGridView,並且我想選擇僅從表單中「查看」參數上的某些行,這會縮小列表以使我的選擇更容易。 。選擇僅查看DataGridView中的某些行

i.e. ComboBox has two choices -> "aaa" and "bbb" 
===== 

Column1 | Column 2 
aaa  | 123 
aaa  | 234 
bbb  | 345 
bbb  | 456 
aaa  | 567 
bbb  | 678 

選擇組合框爲「AAA」之後,我應該得到的結果

Column1 | Column 2 
aaa  | 123 
aaa  | 234 
aaa  | 567 

這應該讓我點擊該行以使從該行的信息到一個單獨的形式..

但原始數據必須保持不變..我不想改變它,只是以不同的方式查看它。

回答

0

如果您使用的是LINQ數據源,您可以根據combobox是否有選擇進行過濾。

var result = from i in MyDataContext select i.Col1, i.Col2 

if (! String.IsNullOrEmpty(cbComboBox1.Text)) 
{ 
    result = from i in result where i.Col1 == cbComboBox1.Text 
      select i; 
} 

如果你沒有使用LINQ的數據源,你可以使用LINQ由indexchanged事件中使用這過濾器適用於已經DataGridView的數據綁定。您還需要編寫一些內容以再次刪除過濾器,以便在顯示所有數據時使用。

if (! string.IsNullOrEmpty(cbComboBox1.Text)) 
{ 
    var result = from DataGridViewRow row in dgvData.Rows 
       where row.Cells["Column1"].Value as string != cbComboBox1.Text 
       select row.Index; 

    foreach (var i in result) 
    { 
     dgvData.Rows[i].Visible = false; 
    } 
}