DataColumn中

时间:2017-08-03 11:38:15

标签: recursion ado.net dataset calculated-columns

在我的DataSet(以XML格式保存)中,我有一个Area表,其中包含三列:IDNameParentIdParentId是一个引用ID的外键,可以有效地创建区域层次结构。

我想在名为Path的新列中维护每个Area的完整路径,其值可以递归定义为

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

我本来希望将此列实现为计算列。 不幸的是,当我尝试将Expression属性设置为以下表达式

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

我收到以下错误:

  

由于表达式中的循环引用,无法设置Expression属性。

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

1 个答案:

答案 0 :(得分:1)

将事件处理程序附加到数据表的行添加/更改(使用以ING结尾的事件作为这些之前的事件)并检查添加/更改的值是否具有封闭路径