Maison >développement back-end >C++ >Comment filtrer un DataGridView lié à un DataSet sans changer sa DataSource ?

Comment filtrer un DataGridView lié à un DataSet sans changer sa DataSource ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-25 09:56:12500parcourir

How to Filter a DataGridView Bound to a DataSet without Changing its DataSource?

Filtrage DataGridView efficace avec DataSet : une approche DataTable directe

Filtrer un DataGridView lié à un DataTable au sein d'un DataSet présente un défi unique. Contrairement aux scénarios dans lesquels le DataTable est directement lié ou où un BindingSource est utilisé, la simple modification de la propriété RowFilter du DataTable n'actualise pas automatiquement l'affichage du DataGridView.

Cette limitation provient de la façon dont DataGridView gère les DataSets. Lorsque le DataSource est un DataSet, la propriété DataMember détermine quel DataTable est affiché. Modifier le RowFilter d'un DataTable non spécifié par DataMember n'a aucun effet visible sur la grille.

La solution consiste à accéder et à manipuler directement le bon DataTable :

<code class="language-csharp">private void textBox1_TextChanged(object sender, EventArgs e)
{
    DataSet ds = (DataSet)dataGridView1.DataSource;
    DataTable dt = ds.Tables[dataGridView1.DataMember];

    dt.DefaultView.RowFilter = string.Format("country LIKE '%{0}%'", textBox1.Text);
}</code>

Cet extrait de code récupère le DataTable actif à l'aide de la propriété DataMember de DataGridView, puis applique le filtre à son DefaultView. Cela met directement à jour l'affichage du DataGridView sans nécessiter de modification de la propriété DataSource.

Essentiellement, cette méthode évite les exceptions qui pourraient survenir lors d'une tentative de refonte du DataSource en un DataSet, garantissant ainsi la compatibilité avec le code existant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn