我几天来一直在Acumatica扩展上遇到这个问题,似乎无法弄清楚解决方案。我在“销售订单”的“库存查找”对话框中添加了一个操作(参见下面的屏幕截图),操作是将QtySelected更新为1并将我添加的字段更新为“testBrand”的品牌。它是SOSitesStatusSelected表的扩展,但每当我点击动作时,它只会更新QtySelected而不是我添加的Field Brand。
您可以参考下面的代码,谢谢,我感谢您的帮助。
//DAC
#region UsrBrand
[PXUIField(DisplayName = "Brand", Visible = true, Enabled = true)]
public virtual string UsrBrand{get;set;}
public abstract class usrBrand : IBqlField{}
#endregion
//BLC
public PXAction<PX.Objects.SO.SOOrder> updateAttributes;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Update Attributes")]
protected void UpdateAttributes()
{
this.Base.sitestatus.AllowInsert= true;
this.Base.sitestatus.AllowUpdate= true;
foreach (SOSiteStatusSelected line in this.Base.sitestatus.Select())
{
line.QtySelected = 1;
this.Base.sitestatus.Update(line);
SOSiteStatusSelectedExt rowExt = this.Base.sitestatus.Cache.GetExtension<SOSiteStatusSelectedExt>(line);
rowExt.UsrBrand = "testBrand";
this.Base.sitestatus.Cache.Update(rowExt);
}
}
答案 0 :(得分:0)
在这种情况下,您的扩展程序SOSiteStatusSelectedExt不是单独的项目。它实际上是基本记录的一部分。所以你不需要单独更新它。
line.QtySelected = 1;
SOSiteStatusSelectedExt rowExt = this.Base.sitestatus.Cache.GetExtension<SOSiteStatusSelectedExt>(line);
rowExt.UsrBrand = "testBrand";
this.Base.sitestatus.Update(line);