我正在开展项目,我需要帮助和方向来显示带有对象作为数据源的主子行
我有以下问题,请帮助我
1)如何将objectdatasource分配给数据网格,以便用户可以单击主行来查看子行
2)一旦网格中显示主子数据,用户就可以编辑任何列,如果用户点击任何列,我必须重新计算值。怎么做?
例如:如果用户正在编辑产品价格,那么我必须计算净价。我不确定如何实现此功能。我必须把我的计算逻辑以及如何从Grid调用我的计算逻辑?
请告诉我完成上述任务的最佳方法。我做了一些研究,但无法找到关于实施的明确例子
谢谢,
答案 0 :(得分:0)
如果您还没有,则需要确保您的课程是复合课程。换句话说:
class Child
{
int ChildId { get; set; }
}
class Parent
{
int ParentId { get; set; }
List<Child> Children { get; set; }
}
从这里开始,Dev Express将为您完成所有繁重的工作。
假设您有两个网格gridMaster
和gridChild
。创建两个绑定源bindMaster
和bindChild
。
在设计器中,使bindMaster的DataSource成为Parent类型的对象。为bindChild bindMaster (而不是对象Master)创建DataSource,并将DataMember属性设置为“Child”。
现在,当您刷新主数据并选择行时,子网格将自动填充到任何主记录的子记录中 - 没有任何手写代码!
以下是另一个类似问题的示例:
Devexpress master-detail in 2 gridcontrols
就产品价格/净价而言,您有两种选择:
在网格中创建一个未绑定的列
(我的偏好),将属性直接添加到对象
这样的事情会起作用:
public double ProductPrice { get; set; }
public double NetPrice
{
get { return ProductPrice * Quantity; }
}
如果网格中的数据发生变化,可能必须在网格视图上触发RefreshData()
,但我会先测试它是否有必要。