2013-06-26 266 views
1

我在DataGrid中搜索一個TextBox,結果只在DataGrid中選擇搜索到的行,所以我希望DataGrid只顯示選定的行結果並隱藏所有其他行。在DataGridView中只顯示搜索結果

這裏是我的代碼:

`

private void SearchTextBox_TextChanged(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow row in dgvUnit.Rows) 
     { 
      if(row.Cells["Id"].Value.ToString().ToLower().StartsWith(SearchTextBox.Text.ToLower())) 
      { 
       row.Selected = true; 
      } 
     } 
    } 

`

+0

背後有什麼來源的datagridview的?只是一個提示:將過濾器應用到源代碼並顯示結果。 – michele

+0

你使用數據表作爲數據源嗎? –

+0

@CarlsJr。我正在使用Datasource – Granit

回答

0

你可以操縱行可見(無論使用DataSource與否)

private void SearchTextBox_TextChanged(object sender, EventArgs e) 
{ 
    dgvUnit.CurrentCell = null; 

    foreach (DataGridViewRow row in dgvUnit.Rows) 
    { 
     if(row.Cells["Id"].Value.ToString().ToLower().StartsWith(SearchTextBox.Text.ToLower())) 
     { 
      row.Visible = true; 
      row.Selected = true; 
     } 
     else 
     { 
      row.Visible = false; 
     } 
    } 
} 
+0

我試過這個,但我得到一個異常:「與貨幣經理的倉位相關的行不能被隱藏。」 – Granit

+0

忘記了您必須在更改行的可見性之前將'CurrentCell'設置爲null。修復並重試。 – gzaxx

+0

非常感謝,它工作:) – Granit