如果子表中的属性等于,则更新主表中的属性

时间:2015-04-25 16:20:47

标签: boolean devexpress xaf

我有2张桌子。在DevExpress XAF中开发的表A(主)和表B(子)。 如果表B中的记录满足此要求,我需要更新表A(字段结束)中的单个属性:

  • Field Status =“Ended”,其中Status是一个Enum字段。

因此,在表A中,字段End是bool属性。

这是我到目前为止所写的内容,但没有运气......

在表B代码页中:

private bool _end;
        public bool End
        {
            get
            {
                return _end;
            }
            set
            {
                bool result;
                
                TableB.Status c = new TableB.Status();
                if (c == TableB.Status.Ended)
                {
                    result = true;
                }
                else
                {
                    result = false;
                }

                SetPropertyValue<bool>("StatusField", ref _end, result);
            }
        }

我运行我的项目,将表B中的字段更改为“已结束”,保存记录但表A中字段End没有更改。

任何想法?

由于

1 个答案:

答案 0 :(得分:0)

您的代码有点令人困惑,因为您说主表“A”(在XAF术语中将是业务对象或BO)具有名为“End”的属性,但您发布的代码似乎定义了你说的那个属性是给孩子“B”。

假设您打算说代码是针对BO“A”,那么这就是从错误的一端接近问题 - 发布的代码只会在A.End被赋值时产生效果,但是您想要设置B.Status设置为“Ended”时的值,因此您需要将一些代码写入B的“Ended”属性。

你也没有说明哪个字段与两个BO有关,所以我将假设这个例子中孩子B有一个名为“Master”的属性,类型为A.我还假设“状态”枚举在B中定义。

在这种情况下,你需要这样的东西,在B代码中:

    private Status _status;
    public Status StatusField {

        get { return _status; }
        set {
            if (value == Status.Ended && Master != null) {
                Master.End = true;
            }
            SetPropertyValue("StatusField", ref _status, value);
        }
    }