我正在处理一个有关正在进行的扩展的有趣情况。
扩展程序存在于“客户位置”屏幕上,并且还有一个额外的网格。
此网格的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”而没有碰到这个,所以我不确定故障的确切位置。
它在保存时删除了所有行这一事实让我感到困扰。
任何人都有任何关于寻找什么的理论或建议?
答案 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)]