DataColumn中的递归表达式的替代方法
问题描述:
在我的DataSet(其持久化为XML)中,我有一个包含三列的Area
表:ID
,Name
和ParentId
。 ParentId
是一个外键,返回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结束使用事件)的事件,并检查所增加的价值/改变有
这种循序渐进的方法是行不通的闭合路径当从XML读取DataSet时,由于行不一定按照拓扑顺序(子节点之前的父节点)加载,而是将所有行加载到表中,然后启用和检查约束。 –
因此需要一些后处理作为负载的一部分(?) –