DataColumn中的递归表达式的替代方法

问题描述:

在我的DataSet(其持久化为XML)中,我有一个包含三列的Area表:ID,NameParentIdParentId是一个外键,返回ID,有效地创建区域层次结构。DataColumn中的递归表达式的替代方法

我要保持在一个名为Path新列,其值可以递归定义为

   { area.Name      ; if ParentId is null 
area.Path := { 
      { Parent.Path + "\" + area.Name ; otherwise 

我本来希望实现此列计算列各区域的完整路径。 不幸的是,当我尝试了Expression属性设置为以下表达式

iif(isnull(ParentId, 0) = 0, Name, Parent.Path + '\' + Name) 

我得到以下错误:

Cannot set Expression property due to circular reference in the expression.

这似乎排除计算列。那么有什么选择?即我如何确保Path列始终包含可在数据绑定的UI中使用的正确值?

附加一个事件处理程序的DataTable的行添加/更改(之前为这些火ING结束使用事件)的事件,并检查所增加的价值/改变有

+0

这种循序渐进的方法是行不通的闭合路径当从XML读取DataSet时,由于行不一定按照拓扑顺序(子节点之前的父节点)加载,而是将所有行加载到表中,然后启用和检查约束。 –

+0

因此需要一些后处理作为负载的一部分(?) –