Lors de l'utilisation de dataView.RowFilter, j'obtiens toujours le résultat filtré, y compris le dernier élément de l'ensemble de données.DataView rowfilter inclut toujours le dernier élément de l'ensemble
J'ai un ensemble de données de test:
private TestClass[] items =
{
new TestClass{name = "Hans", age = 10 },
new TestClass{name = "Bert", age = 5 },
new TestClass{name = "Gerda", age = 41 },
new TestClass{name = "Dolf", age = 73 },
new TestClass{name = "Ludo", age = 35 },
};
Création du dataview:
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Columns.Add("TestItem", typeof(TestClass));
DataView dataView = new DataView(dataTable);
foreach(var item in items)
{
dataView.AddNew(item.name, item.age, item);
}
réglage du filtre et source de données:
dataView.RowFilter = "[Name] = 'Hans'";
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "TestItem";
comboBox1.DataSource = dataView;
Cela devrait retourner seulement Hans comme résultat, mais pour moi cela donne les résultats: Hans et Ludo.
Si je filtre sur 'Ludo', il en résulte seulement 'Ludo'. Pourquoi renvoie-t-il toujours le dernier élément et comment puis-je m'assurer qu'il ne renvoie que l'ensemble filtré?
-edit
public static class DataViewExtensions
{
public static DataRowView AddNew(this DataView dataView, params object[] parameters)
{
DataRowView dataRowView = dataView.AddNew();
int index = 0;
foreach (var parameter in parameters)
{
dataRowView[index++] = parameter;
}
return dataRowView;
}
}
Je teste votre code, et je n'ai pas une surcharge pour 'DatView.AddNew (arg1, arg2, arg3)', juste [DatView.AddNew()] (https://msdn.microsoft .com/fr-fr/library/system.data.dataview.addnew (v = vs.110) .aspx). Avez-vous remplacé cette méthode dans un espace de noms différent? – djv
Lors du remplissage du datatable au lieu de dataView, puis de la création de l'aperçu de données à partir du DataTable rempli, cela fonctionne. – Chevalric
@djv Oui, je suis désolé, c'est une fonction que j'utilise pour ne pas avoir à assigner chaque colonne elle-même. Au lieu de cela j'ai fait une extension qui boucle sur les paramètres pour assigner les valeurs. – Chevalric