0

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

  • Field Status = "Ended",其中 Status 是一个枚举字段。

因此,在表 A 中,字段 End 是一个布尔属性。

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

在表 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 没有更改。

有什么想法吗?

谢谢

4

1 回答 1

0

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

假设您的意思是说代码用于 BO“A”,那么这是从错误的一端解决问题 - 发布的代码仅在 A.End 被分配一个值时才有效,但您想在何时设置该值B.Status 设置为“Ended”,因此您需要在 B 的“Ended”属性中编写一些代码。

您也没有说明哪个字段与两个 BO 相关,因此我将在此示例中假设子 B 具有 A 类型的名为“Master”的属性。我还假设定义了“Status”枚举在 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);
        }
    }
于 2015-04-29T15:01:07.567 回答