Je débute en C# WPF et travaille sur une application qui dispose d'un datagrid lié à une base de donnée MySQL (rattaché directement au projet avec l'assistant), sur ce datagrid je dois être capable d'ajouter, de supprimer, de mettre à jour, de filtrer mes données.
Mon problème intervient sur cette dernière, le filtrage de données sur mon datagrid.
Explication détaillée :
J'ai réussi à insérer et supprimer des lignes dans ma base de données depuis mon datagrid mais je suis bloqué pour ce qui est du filtrage. En effet, je souhaite filtrer mon DataGrid en fonction du contenu d'un TextBox mais je n'y parviens pas. J'ai essayé de filtrer directement ma CollectionViewSource mais le problème est qu'ici je n'ai pas créé mes colonnes et items depuis mon code… je récupère tout depuis la base de données… Je n'ai donc pas d'ObservableCollection ou autres méthodes utiles sous la main. Pourriez vous m'indiquer quelle méthode serait le plus adaptée à cette situation pour filtrer mon DataGrid, ou comment utiliser le filtrage avec une collection dans mon cas ?
Je vous donne une partie de mon code afin de vous aiguiller au mieux :
public partial class MainWindow : Window
{
WpfApp2.liaisonDataSet liaisonDataSet;
WpfApp2.liaisonDataSetTableAdapters.table1TableAdapter liaisonDataSettable1TableAdapter;
System.Windows.Data.CollectionViewSource table1ViewSource;
WpfApp2.liaisonDataSetTableAdapters.table2TableAdapter liaisonDataSettable2TableAdapter;
System.Windows.Data.CollectionViewSource table2ViewSource;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
liaisonDataSet = ((WpfApp2.liaisonDataSet)(this.FindResource("liaisonDataSet")));
// Chargez les données dans la table table2. Vous pouvez modifier ce code selon les besoins.
liaisonDataSettable2TableAdapter = new WpfApp2.liaisonDataSetTableAdapters.table2TableAdapter();
liaisonDataSettable2TableAdapter.Fill(liaisonDataSet.table2);
table2ViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("table2ViewSource")));
table2ViewSource.View.MoveCurrentToFirst();
}
private void TB_filtreNOM_Changed(object sender, TextChangedEventArgs e)
{
// ??
}
private void CollectionViewSource_Filter(object sender, FilterEventArgs e)
{
if (e.Item != null)
e.Accepted = ((string)e.Item).Contains(TB_filtreNOM.Text);
}
}
Merci d'avance,
Thomas
Filtrage Datagrid avec BDD [C#][WPF]
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.