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. Теперь мне кажется, что форма оригинального блоттера не перегружает какой-либо метод и не пропускает какое-либо событие. Но я не могу узнать, что именно упущено.
Может кто-нибудь сказать мне, что я делаю неправильно или не делаю?
Благодарю.
2 ответа
Спасибо всем за ответы и комментарии. Я думаю, что я разобрался с проблемой. На самом деле это было связано с взаимодействием между родными уровнями C++ и C# в моем приложении. Объект, который должен был отображаться в XtraGrid, был создан в слое C++, сетка отображалась асинхронно с созданием / деконструкцией объекта, поэтому в тот момент, когда сетка была готова к его отображению, сам объект не существовал. Отсюда и мусор. Хорошо, что сама сетка не вылетала и не запускала исключения.
Пара вещей:
BindingList не всегда хорошо работает с DevExpress, и вместо него предлагается использовать XPCollection.
У вас есть больше информации о том, как вы настраиваете свои столбцы в xtragrid? Если вы используете неправильные имена полей в столбце, они не будут отображать то, что вы ищете.
Если используемые вами параметры (1, 2, 3) являются идентификаторами, сохраняемыми как fkeys для других объектов (не уверен, используете ли вы xpo или нет), то они также не будут отображаться правильно (вероятно, будет "+" в ячейке вместо любых значений).
[в сторону] убедитесь, что blottertrade реализует INotifyPropertyChanged для лучшего взаимодействия с сеткой.