INLotSerialNbrAttribute Error: must implement the PX.Objects.IN.ILSMaster interface

INLotSerialNbrAttribute Error: must implement the PX.Objects.IN.ILSMaster interface

我正在尝试在我的自定义屏幕上使用 INLotSerialNbrAttribute。我收到以下错误消息。我想这一定与某些使用拆分功能的屏幕有关。对于我的屏幕,我只想允许每行有一个序列号,类似于调整屏幕。我需要在图表上添加一些东西来处理这个问题还是应该创建自己的选择器?

这是我的 DAC 字段的定义

    #region LotSerialNbr
    [PXUIField(DisplayName = "Lot Serial Nbr")]
    [INLotSerialNbr(typeof(AHSVendorCoreDetails.inventoryID), 
    typeof(AHSVendorCoreDetails.subItemID), typeof(AHSVendorCoreDetails.locationID), 
    PersistingCheck = PXPersistingCheck.Nothing)]
    public virtual string LotSerialNbr { get; set; }
    public abstract class lotSerialNbr : PX.Data.BQL.BqlString.Field<lotSerialNbr> { }
    #endregion

[PXArgumentException: IN Error: The specified type AHSVendorCore.AHSVendorCoreDetails must implement the PX.Objects.IN.ILSMaster interface. Parameter name: itemType]
PX.Data.PXCacheCollection.get_Item(Type key) +1547
PX.Data.PXGraph.GetStateExt(String viewName, Object data, String fieldName) +383 PX.Web.UI.PXGrid.bk() +345 PX.Web.UI.PXGrid.d() +64 PX.Web.UI.PXGrid.InitColumnsLayout() +262 PX.Web.UI.PXGrid.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +498
System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +230 System.Web.UI.Control.EnsureChildControls() +130 System.Web.UI.Control.PreRenderRecursiveInternal() +66
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Control.PreRenderRecursiveInternal() +297
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7479

编辑 这是网格列的定义。

                  <px:PXGridColumn DataField="LineNbr" Width="70" ></px:PXGridColumn>
                  <px:PXGridColumn CommitChanges="True" DataField="InventoryID" Width="70" ></px:PXGridColumn>
                  <px:PXGridColumn DataField="TranDesc" Width="280" ></px:PXGridColumn>
                  <px:PXGridColumn DataField="UOM" Width="72" ></px:PXGridColumn>
                  <px:PXGridColumn DataField="ReturnQty" Width="100" ></px:PXGridColumn>
                  <px:PXGridColumn CommitChanges="True" DataField="SiteID" Width="140" ></px:PXGridColumn>
                  <px:PXGridColumn DataField="LocationID" Width="70" ></px:PXGridColumn>
                  <px:PXGridColumn DataField="LotSerialNbr" Width="220" /></Columns></px:PXGridLevel></Levels></px:PXGrid></Template></px:PXTabItem></Items>

编辑 2 这是更新后的版本,其中行模板显示批次序列字段是一个选择器。我仍然遇到同样的问题。

                    <px:PXGrid SyncPosition="True" runat="server" ID="CstPXGrid2" Height="473px" SkinID="Details" Width="100%" DataSourceID="">
                        <Levels>
                            <px:PXGridLevel DataMember="Details" >
                                <Columns>
                                    <px:PXGridColumn DataField="LineNbr" Width="70" ></px:PXGridColumn>
                                    <px:PXGridColumn CommitChanges="True" DataField="InventoryID" Width="70" ></px:PXGridColumn>
                                    <px:PXGridColumn DataField="TranDesc" Width="280" ></px:PXGridColumn>
                                    <px:PXGridColumn DataField="UOM" Width="72" ></px:PXGridColumn>
                                    <px:PXGridColumn DataField="ReturnQty" Width="100" ></px:PXGridColumn>
                                    <px:PXGridColumn CommitChanges="True" DataField="SiteID" Width="140" ></px:PXGridColumn>
                                    <px:PXGridColumn DataField="LocationID" Width="70" ></px:PXGridColumn>
                                    <px:PXGridColumn DataField="LotSerialNbr" Width="220" ></px:PXGridColumn></Columns>
                                <RowTemplate>
                                    <px:PXSelector runat="server" ID="CstPXSelector12" DataField="LotSerialNbr" ></px:PXSelector>
                                    <px:PXNumberEdit runat="server" ID="CstPXNumberEdit13" DataField="LineNbr" />
                                    <px:PXSegmentMask runat="server" ID="CstPXSegmentMask14" DataField="InventoryID" />
                                    <px:PXTextEdit runat="server" ID="CstPXTextEdit15" DataField="TranDesc" />
                                    <px:PXSelector runat="server" ID="CstPXSelector16" DataField="UOM" />
                                    <px:PXNumberEdit runat="server" ID="CstPXNumberEdit17" DataField="ReturnQty" />
                                    <px:PXSegmentMask runat="server" ID="CstPXSegmentMask18" DataField="SiteID" />
                                    <px:PXSegmentMask runat="server" ID="CstPXSegmentMask19" DataField="LocationID" /></RowTemplate></px:PXGridLevel></Levels></px:PXGrid>

我认为您只需要确保您的DAC 实现了ILSMaster 接口和相关字段。如果不是完全需要,只需将所有必填字段设为非数据库字段(例如:PXInt 与 PXDBInt),并使用未绑定的默认值来提供一些默认信息。例如,InvtMult 帮助确定是否收货或发出交易,您可以根据您的要求将其默认为 -1、0 或 1。

例如:

public class AHSVendorCoreDetails : PX.Data.IBqlTable, ILSMaster
{
// Include all required fields from ILSMaster (can be bound or unbound fields)
}