【发布时间】:2019-08-28 12:51:08
【问题描述】:
我已经为屏幕固定资产创建了新的自定义字段。以下代码是我的 DAC 扩展:
using PX.Data;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.EP;
using PX.Objects.FA;
using PX.Objects.GL;
using PX.Objects;
using System.Collections.Generic;
using System;
namespace SGLCustomizeProject
{
public class FALocationHistoryExtension : PXCacheExtension<PX.Objects.FA.FALocationHistory>
{
#region UsrKodeArea
[PXDBString(50)]
[PXUIField(DisplayName = "Kode Area")]
[PXSelector(typeof(Search<KodeAreaMaster.roomCD,
Where<KodeAreaMaster.status,
Equal<statusActive>,
And<KodeAreaMaster.buildingID,
Equal<Current<FALocationHistory.buildingID>>>>>),
typeof(KodeAreaMaster.roomCD),
typeof(KodeAreaMaster.roomDescription),
typeof(KodeAreaMaster.buildingID),
typeof(KodeAreaMaster.status))]
public virtual string UsrKodeArea { get; set; }
public abstract class usrKodeArea : IBqlField { }
#endregion
#region UsrDeskripsiArea
[PXDBString(75)]
[PXUIField(DisplayName = "Deskripsi Area")]
public virtual string UsrDeskripsiArea { get; set; }
public abstract class usrDeskripsiArea : IBqlField { }
#endregion
}
}
我需要将所选值填充到当前屏幕的另一个附加字段中,请看以下截图:
我需要将选择器字段(弹出)中的 Deskripsi Area 值填充到 Deskripsi Area 字段中。
我已经尝试了以下代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Common;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.CR;
using PX.Objects.CM;
using PX.Objects.GL;
using PX.Objects.AP;
using PX.Objects.EP;
using PX.Objects.IN;
using PX.Objects.FA.Overrides.AssetProcess;
using PX.Objects;
using PX.Objects.FA;
namespace SGLCustomizeProject
{
public class AssetMaint_Extension : PXGraphExtension<AssetMaint>
{
public virtual void _(Events.FieldUpdated<FALocationHistory, FALocationHistoryExtension.usrKodeArea> e)
{
var row = e.Row;
var ext = row.GetExtension<FALocationHistoryExtension>();
e.Cache.SetValue<FALocationHistoryExtension.usrDeskripsiArea>(row, ext.UsrKodeArea);
}
}
}
上面这段代码已经工作了,但结果是当我选择 Kode Area 字段时,它也填充到了 Deskripsi Area 字段。我的目标是用选择器字段中的相同字段(Deskripsi 区域)填充 Deskripsi 区域。
我尝试使用以下代码更改上面的代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Common;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.CR;
using PX.Objects.CM;
using PX.Objects.GL;
using PX.Objects.AP;
using PX.Objects.EP;
using PX.Objects.IN;
using PX.Objects.FA.Overrides.AssetProcess;
using PX.Objects;
using PX.Objects.FA;
namespace SGLCustomizeProject
{
public class AssetMaint_Extension : PXGraphExtension<AssetMaint>
{
public virtual void _(Events.FieldUpdated<FALocationHistory, FALocationHistoryExtension.usrKodeArea> e)
{
var row = e.Row;
var ext = row.GetExtension<FALocationHistoryExtension>();
e.Cache.SetValue<FALocationHistoryExtension.usrDeskripsiArea>(row, ext.UsrDeskripsiArea);
}
}
}
但它不起作用。有什么我忘记的步骤吗?
【问题讨论】:
-
感谢您的评论,我已经通过上面使用的链接尝试了您的建议,但仍然出现错误。谢谢。