XtraGrid не отображает правильно добавленную строку

Я использую XtraGrid DevExpress 2.9.5 для отображения блоттера динамического набора строк. Блоттер интегрирован в другое приложение, поэтому он должен быть основан на классе UserControl, а также реализовывать несколько пользовательских интерфейсов.

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

Поскольку данные связываются для управления с помощью BindedList, любое изменение должно автоматически отражаться в форме. И если я попытаюсь добавить новую строку в fDeals, как показано ниже:

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

... я вижу строку, но ее содержание - мусор.

Я пытался сделать то же самое в небольшом тестовом приложении. Он работает нормально с той лишь разницей, что блоттер в тестовом приложении основан на DevExpress.XtraEditors.XtraForm. Мне кажется, что теперь форма оригинального блоттера не перегружает какой-либо метод и не пропускает какое-либо событие. Но я не могу узнать, что именно упущено.

Может кто-нибудь сказать мне, что я делаю неправильно или не делаю?

Спасибо.

13.10.2009 08:43:38
Перейдите на devexpress.com/Support/Center/Default.aspx и задайте свой вопрос там. Их официальная поддержка рулит.
Przemaas 15.10.2009 08:19:03
2 ОТВЕТА

Пара вещей:

  1. BindingList не всегда хорошо работает с DevExpress, и вместо него предлагается использовать XPCollection.

  2. У вас есть больше информации о том, как вы настраиваете свои столбцы в xtragrid? Если вы используете неправильные имена полей в столбце, они не будут отображать то, что вы ищете.

  3. Если используемые вами параметры (1, 2, 3) являются идентификаторами, сохраняемыми как fkeys для других объектов (не уверен, используете ли вы xpo или нет), то они также не будут отображаться правильно (вероятно, будет «+» в ячейке вместо любых значений).

  4. [в сторону] убедитесь, что blottertrade реализует INotifyPropertyChanged для лучшего взаимодействия с сеткой.

0
14.10.2009 18:12:15

Спасибо всем за ответы и комментарии. Я думаю, что я разобрался с проблемой. На самом деле это было связано с взаимодействием между родными уровнями C ++ и C # в моем приложении. Объект, который должен был отображаться в XtraGrid, был создан в слое C ++, сетка отображалась асинхронно с созданием / деконструкцией объекта, поэтому в тот момент, когда сетка была готова к его отображению, сам объект не существовал. Отсюда и мусор. Это хорошо, что сама сетка не вылетала и не запускала исключения.

0
22.10.2009 15:46:09