Bonjour,
J'ai un petit soucis de gestion de valeur considérée comme identique dans un DataTable.
Dans mon code j'ai ceci :
Cette table lorsque je la spécifie, je demande à ce que les doublons ne soient pas autorisés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// The table which contains the value column. /// </summary> private DataTable entriesTable; /// <summary> /// The column which contains all entries. /// </summary> private DataColumn entriesColumn;
Voici la methode pour ajouter un élément dans ma table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void InitializeComponent() { this.entriesTable = new DataTable(); this.entriesColumn = new DataColumn(); this.entriesColumn.DataType = typeof(string); this.entriesColumn.ColumnName = "entries"; this.entriesColumn.ReadOnly = false; this.entriesTable.Columns.Add(this.entriesColumn); this.entriesColumn.Unique = true; }
Tout fonctionne parfaitement , sauf pour le cas limite qui suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private void AddEntry(string entry) { DataRow row = this.entriesTable.NewRow(); row[this.entriesColumn.ColumnName] = entry; try { this.entriesTable.Rows.Add(row); } catch (ConstraintException c) { /* impossible to add the new row because it break a constraint. */ } }
En effet d'un point de vue fonctionnel dans mon application les 2 mots suivants sont considérés comme étant bien différents :
mot 1:mot 2:prießOr pour ma table ils sont identiques... Ce qui me pose problème car je ne vois que 2 solutions à ce problème :Priess
La première serait de surcharger mes éléments pour changer la méthode contains de la DataRowCollection associée... ce qui je trouve est assez lourd au final...
La seconde serait de réimplémenter une méthode contains dans mon code et de tester le contenu de l'entry dans mon AddEntry ... mais j'ai bien peur que ce ne soit pas super optimisé...
Avez vous d'autres idées ?
d'avance,
anne
Partager