C# - Problème pour utiliser le filtre et le tri avec AdvancedDataGridView
Bonjour,
Malgré mes recherches, je ne parviens pas à trouver de solution à mon problème.
Dans une WindowsForm, j'utilise un AdvancedDataGridView (NuGet Packages / AdvancedDataGridView ) pour afficher mes données.
J'utilise l'EntityFramework pour accéder à mes données ( base SQL Server)
L'affichage de ma liste fonctionne bien par contre ni le filtre , ni le tri ne fonctionnent.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
private void frmAgencies_Load(object sender, EventArgs e)
{
// db = Entities
aGENCIESBindingSource1.DataSource = db.AGENCIES.ToList();
}
private void advancedDGVAgencies_SortStringChanged(object sender, EventArgs e)
{
this.aGENCIESBindingSource1.Sort = this.advancedDGVAgencies.SortString;
}
private void advancedDGVAgencies_FilterStringChanged(object sender, EventArgs e)
{
this.aGENCIESBindingSource1.Filter = this.advancedDGVAgencies.FilterString;
} |
Je précise qu'en débug, je passe bien par ces 2 fonctions (en cas de tri ou filtre)..,
j'ai bien des valeurs advancedDGVAgencies.FilterString par ex, dans mais aucune modification de la liste ne se fait (même après un advancedDGVAgencies.Refresh() )
Je débute en C# / WinForm , je ne sais pas si je suis assez précise dans mes explications.
merci pour votre aide
C# - Problème pour utiliser le filtre et le tri avec AdvancedDataGridView
J'ai fini par trouver une solution (est-ce la bonne ? )
J'ai du convertir ma DataSource en Data table
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
...
var list = db.AGENCIES.ToList();
aGENCIESBindingSource1.DataSource = ToDataTable(list);
...
public static DataTable ToDataTable<T>(this List<T> items)
{
var tb = new DataTable(typeof(T).Name);
PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
tb.Columns.Add(prop.Name, prop.PropertyType);
}
foreach (var item in items)
{
var values = new object[props.Length];
for (var i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
tb.Rows.Add(values);
}
return tb;
} |