属性字段不显示所有页面上的属性值

时间:2017-07-07 17:19:40

标签: acumatica

我有一个字段,显示名为"涂层的项目的属性。"我通过布局编辑器将此字段添加到我自定义的两个现有屏幕:销售价格和销售价格工作表页面。在“销售价格工作表”页面上,涂料显示正常:

enter image description here

但是,在“销售价格”页面上,它们不会:

enter image description here

我在受尊敬的网格中包含的布局编辑器中的页面自定义中具有完全相同的元素:InventoryItem__COATING_Attributes。检查元素的Attributes选项卡,它们都具有相同的代码:

protected string[] _Attributes;

/// <summary>
/// Reserved for internal use.
/// Provides the values of attributes associated with the item.
/// For more information see the <see cref="CSAnswers"/> class.
/// </summary>
[CRAttributesField(typeof(InventoryItem.itemClassID))]

据我所知,一切都完全一样。我甚至检查了为这两个页面发送的查询结果。 select语句,它们正确地返回类似的语句,以显示每个元素的涂层。

关于为什么这不起作用的任何想法?

1 个答案:

答案 0 :(得分:2)

由于在another thread中发布的样本以及为ARPriceWorksheetMaint.Details数据视图声明缺少委托,我假设该属性在Sales Price Worksheets屏幕上按预期工作:

public class ARPriceWorksheetMaint : PXGraph<ARPriceWorksheetMaint, ARPriceWorksheet>
{
    ...
    [PXImport(typeof(ARPriceWorksheet))]
    public PXSelectJoin<ARPriceWorksheetDetail,
            LeftJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<ARPriceWorksheetDetail.inventoryID>>>, Where<ARPriceWorksheetDetail.refNbr, Equal<Current<ARPriceWorksheet.refNbr>>>,
            OrderBy<Asc<ARPriceWorksheetDetail.priceType, Asc<ARPriceWorksheetDetail.priceCode, Asc<InventoryItem.inventoryCD, Asc<ARPriceWorksheetDetail.breakQty>>>>>> Details;
    ...
}

在销售价格屏幕上,有一个records()委托只返回ARSalesPrice DAC的实例,阻止该属性从数据库中获取其值:

public virtual IEnumerable records()
{
    ...
    foreach (PXResult<ARSalesPrice> res in QSelect(this, Records.View.BqlSelect, new object[] { filter.PriceType, filter.PriceType, filter.PriceType == PriceTypes.Customer ? priceCode : null, filter.PriceType == PriceTypes.CustomerPriceClass ? priceCode : null, priceCode, filter.InventoryID, filter.InventoryID, filter.EffectiveAsOfDate, filter.EffectiveAsOfDate, filter.EffectiveAsOfDate, filter.ItemClassID, filter.ItemClassID, filter.InventoryPriceClassID, filter.InventoryPriceClassID, filter.OwnerID, filter.OwnerID, filter.MyWorkGroup, filter.WorkGroupID, filter.WorkGroupID }))
    {
        ARSalesPrice price = res;
        yield return price;
    }
    ...
}

要在“销售价格”屏幕上显示该属性,您应修改“记录”数据视图并覆盖其委托以返回ARSalesPrice和InventoryItem DAC的实例:

public class ARSalesPriceMaintExt : PXGraphExtension<ARSalesPriceMaint>
{
    [PXFilterable]
    public PXSelectJoin<ARSalesPrice,
        LeftJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<ARSalesPrice.inventoryID>>>,
        Where<InventoryItem.itemStatus, NotEqual<INItemStatus.inactive>,
        And<InventoryItem.itemStatus, NotEqual<INItemStatus.toDelete>,
        And2<Where<Required<ARSalesPriceFilter.priceType>, Equal<PriceTypes.allPrices>, Or<ARSalesPrice.priceType, Equal<Required<ARSalesPriceFilter.priceType>>>>,
        And2<Where<ARSalesPrice.customerID, Equal<Required<ARSalesPriceFilter.priceCode>>, Or<ARSalesPrice.custPriceClassID, Equal<Required<ARSalesPriceFilter.priceCode>>, Or<Required<ARSalesPriceFilter.priceCode>, IsNull>>>,
        And2<Where<ARSalesPrice.inventoryID, Equal<Required<ARSalesPriceFilter.inventoryID>>, Or<Required<ARSalesPriceFilter.inventoryID>, IsNull>>,
        And2<Where2<Where2<Where<ARSalesPrice.effectiveDate, LessEqual<Required<ARSalesPriceFilter.effectiveAsOfDate>>, Or<ARSalesPrice.effectiveDate, IsNull>>,
        And<Where<ARSalesPrice.expirationDate, GreaterEqual<Required<ARSalesPriceFilter.effectiveAsOfDate>>, Or<ARSalesPrice.expirationDate, IsNull>>>>,
        Or<Required<ARSalesPriceFilter.effectiveAsOfDate>, IsNull>>,
        And<Where2<Where<Required<ARSalesPriceFilter.itemClassID>, IsNull,
                Or<Required<ARSalesPriceFilter.itemClassID>, Equal<InventoryItem.itemClassID>>>,
            And2<Where<Required<ARSalesPriceFilter.inventoryPriceClassID>, IsNull,
                Or<Required<ARSalesPriceFilter.inventoryPriceClassID>, Equal<InventoryItem.priceClassID>>>,
            And2<Where<Required<ARSalesPriceFilter.ownerID>, IsNull,
                Or<Required<ARSalesPriceFilter.ownerID>, Equal<InventoryItem.priceManagerID>>>,
            And2<Where<Required<ARSalesPriceFilter.myWorkGroup>, Equal<False>,
                     Or<InventoryItem.priceWorkgroupID, InMember<CurrentValue<ARSalesPriceFilter.currentOwnerID>>>>,
            And<Where<Required<ARSalesPriceFilter.workGroupID>, IsNull,
                Or<Required<ARSalesPriceFilter.workGroupID>, Equal<InventoryItem.priceWorkgroupID>>>>>>>>>>>>>>>,
            OrderBy<Asc<ARSalesPrice.inventoryID,
                    Asc<ARSalesPrice.priceType,
                    Asc<ARSalesPrice.uOM, Asc<ARSalesPrice.breakQty, Asc<ARSalesPrice.effectiveDate>>>>>>> Records;


    public IEnumerable records()
    {
        var startRow = PXView.StartRow;
        int totalRows = 0;

        foreach (ARSalesPrice salesPrice in Base.Records.View.Select(PXView.Currents, PXView.Parameters, PXView.Searches, 
            PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows))
        {
            var item = PXSelectorAttribute.Select<ARSalesPrice.inventoryID>(Records.Cache, salesPrice) as InventoryItem;
            var res = new PXResult<ARSalesPrice, InventoryItem>(salesPrice, item);
            yield return res;
        }
        PXView.StartRow = 0;
    }
}