J'ai un Datagridview et le Data Source
est dtCustomer
Je veux juste filtrer le contenu de la vue grille en fonction d'un texte de recherche. Itried le code suivant
DataTable dtSearch = dtCustomer;
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtSearch;
Mais ça ne fonctionne pas. Si un organisme connaît la solution, veuillez la partager.
Essaye ça:
dtSearch.DefaultView.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
Et vérifiez tout ce qu'il y a de l'espace à supprimer en coupant le texte.
La valeur de retour pour DataTable.Select est un tableau DataRow []. Il renvoie une liste de DataRows correspondants. Votre code ne fait rien avec ces lignes pour le moment.
Vous pouvez configurer un DataView avec un filtre et définir le DataSource de la grille sur le DataView:
DataView dv = new DataView(dtSearch);
dv.RowFilter = "...";
grvCustomer.DataSource = dv;
Ou essayez ceci;
dataGridView.Datasource = datatable.Select("....").CopyToDataTable()
Vous pouvez essayer d'utiliser un DataView (code non testé) -
DataView dv = new DataView(dtSearch);
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
grvCustomer.DataSource = dv;
dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList()
Vous pouvez faire quelque chose comme ça.
DataView dv1 = dtDefault.DefaultView;
dv1.RowFilter = "CusGroupId=1 and CustomerCode LIKE '"+txtCustomer.Text +"%'";
DataTable dt=dv1.ToTable();
DataTable.Select renvoie un tableau de lignes, mais vous liez la table de données entière et non les lignes filtrées. utilisez cette méthode ou DataView
DataTable dtSearch = dtCustomer;
var filter = dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = filter.ToList();
Je pense que c'est ce que vous cherchez?
//DataTable dtSearch = dtCustomer;
//dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtCustomer.Select("cust_Name like '" + txtSearch.Text + "%'");
Et quand vous voulez revenir aux données d'origine
grvCustomer.DataSource = dtCustomer;