2009-10-13 15 views
0

J'utilise XtraGrid de DevExpress 2.9.5 pour afficher un buvard d'un ensemble dynamique de lignes. Le buvard est intégré dans une autre application, c'est pourquoi il doit être basé sur la classe UserControl et implémenter quelques interfaces personnalisées.XtraGrid n'affiche pas correctement la ligne nouvellement ajoutée

public partial class BlotterForm : UserControl, ISMMdiEmbeddable, ISMAssociatedMFCWindow 
{ 
    private BindingList<BlotterTrade> fDeals; 
.... 
} 

Comme les données sont binded à contrôler en utilisant BindedList, tout changement devrait se traduire sous la forme automatiquement. Et si je tente d'ajouter une nouvelle ligne à fDeals aiment suit:

public void AddDeal() 
{ 
    fDeals.Add(new BlotterTrade(1,2,3)); 
} 

... Je peux voir la ligne, mais il est contenu est de la foutaise. J'ai essayé de faire la même chose dans une petite application de test. Cela fonctionne bien avec seulement la différence que le buvard dans l'application de test est basé sur DevExpress.XtraEditors.XtraForm. Pour moi, il semble maintenant que la forme du buvard original ne surcharge pas certaines méthodes ou manque un événement. Mais je ne peux pas savoir exactement ce qui manque. Est-ce que quelqu'un peut me dire ce que je fais mal ou ne fais pas?

Merci.

+1

Rendez-vous sur http://www.devexpress.com/Support/Center/Default.aspx et posez-y votre question. Leur soutien officiel se balance. – Przemaas

Répondre

0

Quelques choses:

  1. BindingList ne fonctionne pas toujours très bien avec DevExpress, et il est suggéré d'utiliser XPCollection à la place.

  2. Avez-vous plus d'informations sur la façon dont vous configurez vos colonnes dans le xtragrid? Si vous utilisez des noms de champs incorrects dans la colonne, ils ne montreront pas ce que vous cherchez. Si les paramètres que vous utilisez (1, 2, 3) sont stockés en tant que clés d'autres objets (vous ne savez pas si vous utilisez xpo ou non), ils ne s'afficheront pas correctement non plus sera probablement un '+' dans la cellule au lieu de toute valeur). [Aside] Assurez-vous que blottertrade implémente INotifyPropertyChanged pour une meilleure interaction avec la grille.

0

Merci à tous pour les réponses et commentaires. Je pense que j'ai réglé le problème. C'était en fait lié à l'interaction entre les couches C++ et C# natives dans mon application. L'objet qui devait être affiché dans XtraGrid a été créé en C++, la grille était affichée de façon asynchrone avec la construction/déconstruction de l'objet, c'est pourquoi au moment où la grille était prête à l'afficher, l'objet n'existait pas. D'où les ordures. C'est bien que la grille elle-même ne s'écrase pas ou ne tire pas d'exceptions.