2015-10-20 1 views
0

J'ai un contrôle gridcontrol lié à Datatable, dans ma grille je laisse les utilisateurs sélectionner les produits à traiter.Comment empêcher l'ajout de lignes en double à un gridControl DevExpress

Le problème est que je ne veux pas que les utilisateurs ajoutent deux fois le même code de produit à la grille.

Y at-il un moyen de les empêcher d'ajouter le même code de produit deux fois?

J'ai déjà essayé Unique attirbute dans mon DataTable bu ça n'a pas fonctionné comme j'en avais besoin.

Toute aide sera appréciée

+0

vous pouvez définir un filtre pour la recherche de produit – HubertL

Répondre

0

Je pensais à quelque chose comme ça

gridViewDefault.RowLoaded += gridViewDefault_RowLoaded; 

Hashtable hashTable = new Hashtable(); 
     void gridViewDefault_RowLoaded(object sender, RowEventArgs e) 
     { 
      var obj = (sender as GridView).GetRow(e.RowHandle) as OrderDocument; 
      var uniqueId = obj.Document.DocumentId; 
      if(hashTable[uniqueId] == null) 
       hashTable.Add(uniqueId, 1); 
      else 
       (sender as GridView).DeleteRow(e.RowHandle); 
     } 

mais vu que l'événement RowLoaded seulement des incendies dans Instant Feedback Mode

Apparemment, il n'y a aucun événement immédiat après une DataSource a terminé le chargement. Par conséquent, au lieu de basé sur l'événement, j'irais pour une fonction similaire à celle que j'ai écrite, qui itére l'ensemble GridView, après que vous ayez toutes les données.

1

J'utilise normalement l'événement GridView.ValidateRow qui devrait se déclencher lorsque l'utilisateur a fini d'éditer une ligne. Les args d'événements permettent d'accéder à l'objet ligne via e.Row, un message d'erreur via e.ErrorText et un état valide via e.Valid. Il est donc préférable de saisir le code du produit dans la ligne mise à jour et de le rechercher dans le datatable.