我有一个DAC,其DAC从table1到FK1到Table1ID,从table2到FK2到Table2ID。我在这些字段上添加了PXSelector以显示友好名称而不是ID号。当用户过滤Table2ID并在屏幕上添加新记录,并在各列之间使用选项卡输入信息时,Table1ID列的值消失了。用户可以将值添加回该列,但是我试图弄清楚为什么消失了。如果我从Table2ID字段中删除PXSelector,则一切正常。 PXSelector是一个简单的选择,可以检查IsActive是否为真。
<px:PXGridColumn DataField="AdministrationRouteID" DisplayMode="Text" Width="100px" CommitChanges="True" />
<px:PXGridColumn DataField="MedicationID" DisplayMode="Text" Width="200px" CommitChanges="True" />
public abstract class administrationRouteID : PX.Data.IBqlField
{
}
protected int? _AdministrationRouteID;
[PXDBInt()]
[PXDefault()]
[PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
Where<SsAhAdministrationRoute.isActive, Equal<True>>>), DescriptionField = typeof(SsAhAdministrationRoute.name))]
[PXUIField(DisplayName = "Administration Route")]
public virtual int? AdministrationRouteID
{
get
{
return this._AdministrationRouteID;
}
set
{
this._AdministrationRouteID = value;
}
}
public abstract class medicationID : PX.Data.IBqlField
{
}
protected int? _MedicationID;
[PXDBInt()]
[PXDefault()]
[PXSelector(typeof(Search<SsAhMedication.medicationId,
Where<SsAhMedication.isActive, Equal<True>>>), DescriptionField = typeof(SsAhMedication.name))]
[PXUIField(DisplayName = "Medication Name")]
public virtual int? MedicationID
{
get
{
return this._MedicationID;
}
set
{
this._MedicationID = value;
}
}
答案 0 :(得分:1)
听起来您只需要使用SubstituteKey属性在选择器上指示CD字段即可。下面的示例假定SsAhAdministrationRoute.administrationRouteCD
是与SsAhAdministrationRoute.administrationRouteID
ID键值有关的CD用户友好值。
[PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
Where<SsAhAdministrationRoute.isActive, Equal<True>>>),
DescriptionField = typeof(SsAhAdministrationRoute.name),
SubstituteKey = typeof(SsAhAdministrationRoute.administrationRouteCD))]
答案 1 :(得分:1)
检查CommitChanges =“ true”仅适用于需要该功能的GridColumns。如果不需要,请尝试从选择器列中删除CommitChanges =“ true”。网格上的SyncPosition =“ true”可能也有帮助,尤其是在数据输入过程中在行与行之间跳跃时。