XtraGrid не отображает правильно добавленную строку - PullRequest
0 голосов
/ 13 октября 2009

Я использую 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. Мне кажется, что теперь форма оригинального блоттера не перегружает какой-либо метод и не пропускает какое-либо событие. Но я не могу узнать, что именно упущено.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 октября 2009

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

0 голосов
/ 14 октября 2009

Пара вещей:

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

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

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

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

...