InitRow = true删除所有记录

时间:2016-06-03 14:07:36

标签: acumatica

我正在处理一个有关正在进行的扩展的有趣情况。

扩展程序存在于“客户位置”屏幕上,并且还有一个额外的网格。

此网格的DAC有四个主键

CompanyID, BAccountID, LocationId, SortOrder的

DAC中的主键定义如下

    #region BAccountID

    public abstract class bAccountID : PX.Data.IBqlField
    {
    }

    protected int? _BAccountID;

    [PXDBInt(IsKey = true)]
    [PXDefault(typeof(Location.bAccountID))]
    public virtual int? BAccountID
    {
        get
        {
            return this._BAccountID;
        }
        set
        {
            this._BAccountID = value;
        }
    }

    #endregion BAccountID

    #region LocationID

    public abstract class locationID : PX.Data.IBqlField
    {
    }

    protected int? _LocationID;

    [PXDBInt(IsKey = true)]
    [PXDefault(typeof(Location.locationID))]
    public virtual int? LocationID
    {
        get
        {
            return this._LocationID;
        }
        set
        {
            this._LocationID = value;
        }
    }

    #endregion LocationID

    #region SortOrder

    public abstract class sortOrder : PX.Data.IBqlField
    {
    }

    protected int? _SortOrder;

    [PXDBInt(IsKey = true)]
    [PXDefault]
    [PXLineNbr(typeof(CWACustomerLocationItem))]
    [PXParent(typeof(Select<CWACustomerLocationItem,
        Where<CWACustomerLocationItem.bAccountID, Equal<Current<Location.bAccountID>>, And<CWACustomerLocationItem.locationID, Equal<Current<Location.locationID>>>>>))]
    [PXUIField(DisplayName = "Sort Order", Enabled = false)]
    public virtual int? SortOrder
    {
        get
        {
            return this._SortOrder;
        }
        set
        {
            this._SortOrder = value;
        }
    }

    #endregion SortOrder

我遇到的问题是,如果在网格定义上,我设置“InitRow = false”,排序顺序中的第一个数字从2开始而不是1,并且在行完成之前不会自行添加。

如果在添加新行时设置“InitRow = true”,则排序顺序从1开始并正确递增,但是如果我添加新行并且在保存所有行时不更新其他值(仅显示排序顺序)在网格中被删除。

我已经验证数据库中的所有“非空”字段都是在DAC中指定的

全网格定义如下

<px:PXGrid runat="server" ID="CstPXGrid1" Width="100%" SkinID="DetailsInTab" KeepPosition="True" SyncPosition="True">
        <Levels>
          <px:PXGridLevel DataMember="LocationItem">
            <Columns>
              <px:PXGridColumn DataField="SortOrder" Width="70" />
              <px:PXGridColumn DataField="InventoryID" Width="120" AutoCallBack="True" />
              <px:PXGridColumn DataField="InventoryID_description" Width="200" />
              <px:PXGridColumn DataField="SellingUOM" Width="70" />
              <px:PXGridColumn DataField="SellingPrice" Width="100" />
              <px:PXGridColumn DataField="MinQty" Width="100" />
              <px:PXGridColumn DataField="MaxQty" Width="100" />
              <px:PXGridColumn DataField="EOQ" Width="100" />
              <px:PXGridColumn DataField="Comments" Width="70" />
              <px:PXGridColumn DataField="Inactive" Width="60" Type="CheckBox" /></Columns></px:PXGridLevel></Levels>
        <AutoSize Enabled="True" Container="Parent" MinHeight="200" />
        <ActionBar>
          <CustomItems>
            <px:PXToolBarButton Text="Up" Tooltip="Move Node Up" CommandName="Up" Visible="True" CommandSourceID="ds">
              <Images Normal="main@ArrowUp" /></px:PXToolBarButton>
            <px:PXToolBarButton Text="Down" Tooltip="Move Node Down" CommandSourceID="ds" CommandName="Down">
              <Images Normal="main@ArrowDown" /></px:PXToolBarButton></CustomItems></ActionBar>
        <AutoCallBack Enabled="True" />
        <Mode InitNewRow="True" /></px:PXGrid>

我曾多次使用过“InitRow”而没有碰到这个,所以我不确定故障的确切位置。

它在保存时删除了所有行这一事实让我感到困扰。

任何人都有任何关于寻找什么的理论或建议?

1 个答案:

答案 0 :(得分:2)

我相信我弄明白了这个问题。 PXParent / number的定义在上面是错误的。

正确的排序顺序DAC如下:

    [PXDBInt(IsKey = true)]
    [PXDefault()]
    [PXLineNbr(typeof(Location),false)]
    [PXParent(typeof(Select<Location,
        Where<Location.bAccountID, Equal<Current<CWACustomerLocationItem.bAccountID>>, And<Location.locationID, Equal<Current<CWACustomerLocationItem.locationID>>>>>))]
    [PXUIField(DisplayName = "Sort Order", Enabled = false)]