2013-06-26 7 views
1

J'ai un TextBox pour rechercher dans DataGrid, et le résultat ne sélectionne que la ligne recherchée dans DataGrid, donc je veux que le DataGrid n'affiche que le résultat de ligne sélectionné et masque toutes les autres lignes.Afficher uniquement le résultat recherché dans DataGridView

Voici mon code:

`

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

Quelle est la source derrière datagridview? Juste un conseil: appliquez le filtre à la source et affichez les résultats. – michele

+0

utilisez-vous un datatable comme source de données? –

+0

@CarlsJr. J'utilise Datasource – Granit

Répondre

0

Vous pouvez manipuler la visibilité de la ligne (peu importe si l'utilisation DataSource ou non)

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

J'ai essayé mais j'ai une exception "La ligne associée à la position du gestionnaire de devises ne peut pas être rendue invisible." – Granit

+0

Oublié que vous devez définir CurrentCell à null avant de modifier la visibilité de la ligne. Corrigé et réessayez. – gzaxx

+0

Merci beaucoup, ça a marché :) – Granit

Questions connexes