使用objectDatasource

时间:2016-11-03 23:56:37

标签: winforms devexpress xtragrid

我正在开展项目,我需要帮助和方向来显示带有对象作为数据源的主子行

我有以下问题,请帮助我

1)如何将objectdatasource分配给数据网格,以便用户可以单击主行来查看子行

2)一旦网格中显示主子数据,用户就可以编辑任何列,如果用户点击任何列,我必须重新计算值。怎么做?

例如:如果用户正在编辑产品价格,那么我必须计算净价。我不确定如何实现此功能。我必须把我的计算逻辑以及如何从Grid调用我的计算逻辑?

请告诉我完成上述任务的最佳方法。我做了一些研究,但无法找到关于实施的明确例子

谢谢,

1 个答案:

答案 0 :(得分:0)

如果您还没有,则需要确保您的课程是复合课程。换句话说:

class Child
{
   int ChildId { get; set; }
}

class Parent
{
   int ParentId { get; set; }
   List<Child> Children { get; set; }
}

从这里开始,Dev Express将为您完成所有繁重的工作。

假设您有两个网格gridMastergridChild。创建两个绑定源bindMasterbindChild

在设计器中,使bindMaster的DataSource成为Parent类型的对象。为bindChild bindMaster (而不是对象Master)创建DataSource,并将DataMember属性设置为“Child”。

现在,当您刷新主数据并选择行时,子网格将自动填充到任何主记录的子记录中 - 没有任何手写代码!

以下是另一个类似问题的示例:

Devexpress master-detail in 2 gridcontrols

就产品价格/净价而言,您有两种选择:

  1. 在网格中创建一个未绑定的列

  2. (我的偏好),将属性直接添加到对象

  3. 这样的事情会起作用:

    public double ProductPrice { get; set; }
    public double NetPrice
    {
        get { return ProductPrice * Quantity; }
    }
    

    如果网格中的数据发生变化,可能必须在网格视图上触发RefreshData(),但我会先测试它是否有必要。