XtraGrid无法正确显示新添加的行

时间:2009-10-13 08:43:39

标签: devexpress bindinglist xtragrid

我正在使用DevExpress 2.9.5的XtraGrid来显示动态线条组的吸墨纸。吸墨器集成到另一个应用程序中,这就是为什么它必须基于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 :(得分:0)

有几件事:

  1. BindingList并不总是与DevExpress一起使用,建议改为使用XPCollection。

  2. 您是否有关于如何在xtragrid中设置列的更多信息?如果您在列中使用了错误的字段名称,那么它们将无法显示您要查找的内容。

  3. 如果你正在使用的参数(1,2,3)是作为fkeys存储到其他对象的id(不确定你是否使用xpo)那么它们也不会正确显示(在单元格中可能有一个'+'而不是任何值。)

  4. [旁边]确保blottertrade实现INotifyPropertyChanged以更好地与网格交互。

答案 1 :(得分:0)

感谢大家的回答和评论。我想我解决了这个问题。它实际上与我的应用程序中的本机C ++和C#层之间的交互有关。应该在XtraGrid中显示的对象是在C ++层创建的,网格与对象构造/解构异步显示,这就是为什么当网格准备好显示它时,对象本身不存在。因此垃圾。网格本身没有崩溃或触发异常,这很好。

相关问题