在我的DataSet(以XML格式保存)中,我有一个Area
表,其中包含三列:ID
,Name
和ParentId
。 ParentId
是一个引用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中使用的正确值?
答案 0 :(得分:1)
将事件处理程序附加到数据表的行添加/更改(使用以ING结尾的事件作为这些之前的事件)并检查添加/更改的值是否具有封闭路径