2017-08-03 10 views
0

私のデータセット(XMLとして永続化されています)にはID,NameParentIdという3つの列を持つAreaテーブルがあります。 ParentIdは、IDを参照する外部キーであり、効果的に領域の階層を作成します。DataColumnの再帰式の代替

私は、その値が、私は計算列として、このコラムを実装したかった

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

として再帰的に定義することができますPathと呼ばれる新しい列、各エリアのフルパスを維持したいです。 残念ながら、私は次のエラーを取得する次の式

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

Expressionプロパティを設定しようとすると:

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

これは、計算列を除外するようです。代替案は何ですか?私。 Path列に、データバインドUIで使用できる正しい値が常に含まれていることを確認するにはどうすればよいですか?

答えて

1

イベント(前これら火災などINGで終わる使用イベント)を変更/追加データテーブルの行にイベントハンドラを取り付け、変更/追加された値をチェックこの増分アプローチは、仕事に行くされていない閉路

+0

を有しますデータセットがXMLから読み込まれるとき、行は必ずしもトポロジカルな順番(子の前の親)で読み込まれるのではなく、すべての行がテーブルにロードされてから制約が有効にされ、チェックされるからです。 –

+0

したがって、負荷の一部としての後処理が必要になります(?) –