0
votes

Filtrer A DataGridView avec Textbox dans Visual Studio C #

Je suis en train d'essayer de créer un logiciel contenant des informations manuellement ajoutées par l'utilisateur à l'intérieur datagridtextcell . Le but est de filtrer le datagridview avec un textbox . Le logiciel doit filtrer les informations de texte et afficher les lignes contenant les informations de texte relatives à la zone de texte .

Je n'utilise pas MySQL ou quoi que ce soit qui est associé à la base de données.

i Utilisez un Textbox avec nom textbox1 et en utilisant son TEXTCHANGED événement. L'utilisateur écrit des données à l'intérieur de 3 tables appelées IndexView, Kategorieview et InhalTeview Intérieur DataGridView1 .

Que se passe-t-il lorsque je saisi des données à l'intérieur de la zone de texte Il réinitialise Le dataGridView à zéro contenu.

im un débutant dans Visual Studio et en C #. J'ai des connaissances de base en c. xxx


4 commentaires

Essayez quelque chose comme ceci, instau de l'utilisation des temps de filtre multipiles (DataGridView.dataSource comme DataTable) .defaultview.rowfilter = string.format ("indexView comme" {0}% 'ou kategorieview aime "% {1}%" ou inhalteview comme " % {2}% '", textebox1.text, textbox1.text, textbox1.text);


Quelle est votre source de données initiale? Où et comment stockez-vous les données d'origine?


Pourriez-vous s'il vous plaît Modifier votre message et ajouter le code? Il est illisible dans un commentaire


Bonjour @mong Zhu, Post est mis à jour. Bonjour les démocrates Merci pour les liens - je suis toujours en train de lire et d'essayer de déterminer où implémenter THR Supprimerfilter.


3 Réponses :


0
votes

Selon le Documentation Vous devez appeler SupprimerFilter premier.

... En outre, la valeur du filtre persistera lorsque la source de données change. Pour arrêter de filtrer la DataSource, appelez la méthode SupprimerFilter.


0 commentaires

1
votes

La raison peut être que la source de données du DataGridView est toujours null code>. Vous pouvez essayer de définir un dataTable code> pour stocker les données, puis l'utiliser comme référence datasource code> de liaison de liaison code>.

private void textBox1_TextChanged(object sender, EventArgs e)
{
    // Define a datatable
    DataTable dt = new DataTable("tablename");
    DataRow dr;
    dt.Columns.Add("iView", System.Type.GetType("System.String"));
    dt.Columns.Add("kView", System.Type.GetType("System.String"));
    dt.Columns.Add("cView", System.Type.GetType("System.String"));
    for (int i = 0; i < this.dataGridView1.Rows.Count -1; i++)
    {
        dr = dt.NewRow();
        for (int j = 0; j < 3; j++)
        {
            dr[j] = this.dataGridView1.Rows[i].Cells[j].Value.ToString();
        }
        dt.Rows.Add(dr);
    }

    // Filter
    BindingSource bs = new BindingSource();
    bs.DataSource = dt;
    bs.Filter = "iView like '%" + textBox1.Text + "%'";
    bs.Filter = "kView like '%" + textBox1.Text + "%'";
    bs.Filter = "cView like '%" + textBox1.Text + "%'";
    // Reset the datagridview content
    dataGridView1.Columns.Clear();
    dataGridView1.DataSource = bs;
}


1 commentaires

Merci M. Wang. Cela me aide beaucoup. Maintenant, je peux travailler à maintenir / restaurer les données d'origine.



0
votes

Je n'ai pas composé de solution qui me satesfy moi.

alors glissé tout le projet dans une base de données locale. Là où beaucoup de tutoriels en ligne avec de nombreuses bonnes solutions.

J'ai appris des choses importantes et j'apprécie l'aide de tout le monde.

-Topic fermé -


0 commentaires