处理字段样式时出错:“)”附近的语法不正确

An error occurred while processing the field Style : Incorrect syntax near ')'

我想实现的,是获取InSiteStatus中特定inventoryID的QtyOnHandtable。

我为 InventoryID 创建了一个 DAC,并将其标记为 "Style",另一个为 QtyOnHand。

我使用了 FieldUpdated 事件处理程序,因此每次用户选择新的 inventoryID 时,它都会更新 QtyOnHand 字段。

这是我的作品。

解码器:

    public class AllocationFilter: IBqlTable
    {
    #region Style
    public abstract class style : IBqlField
    {
    }
    [PXInt]
    [PXUIField(DisplayName = "Style")]
    [PXSelector(typeof(InventoryItem.inventoryID)
    , typeof(InventoryItem.inventoryCD)
    , typeof(InventoryItem.descr)
    , SubstituteKey = typeof(InventoryItem.inventoryCD)
    )]
    public virtual int? Style { get; set; }
    #endregion

    #region OnHand
    public abstract class onHand : IBqlField
    { }
    [PXDecimal()]
    [PXUIField(DisplayName = "On Hand", Enabled = false)]

    public virtual decimal? OnHand { get; set; }
    #endregion
    }

事件处理程序:

    protected void AllocationFilter_Style_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
    {
    // Obtain the new data record that contains the updated
    // values of all data fields
    AllocationFilter filterAlloc = (AllocationFilter)e.Row;

    if (filterAlloc == null)
    return;

    // This is where the error triggers...
    PXResultset<INSiteStatus> insitestatus = PXSelect<INSiteStatus, 
    Where<INSiteStatus.inventoryID, 
    Equal<AllocationFilter.style>>>.Select(this);

    foreach (INSiteStatus sitestatus in insitestatus)
    {
        filterAlloc.OnHand = sitestatus.QtyOnHand;
    }
    }

我认为我的 PXResultSet 有问题,你们能帮帮我吗?

我在这里看到了两个选项。

一,为此创建一个视图

public PXSelect<INSiteStatus,Where<INSiteStatus.inventoryID,Equal<Current<AllocationFilter.style>>> StyleStatus;

然后在您的事件处理程序中

foreach (INSiteStatus sitestatus in StyleStatus.Select())
{......}

或两个,内联就像你拥有的那样

PXResultset<INSiteStatus> insitestatus = PXSelect<INSiteStatus, 
Where<INSiteStatus.inventoryID, 
Equal<Required<INSiteStatus.inventoryID>>>.Select(this,filterAlloc.Style);

除非您需要更好地控制 select 语句,否则我会使用 View