我尝试使用下一篇文章中提供的说明为服务订单和约会提供属性,但是当我尝试向图形扩展中的第二个声明的视图添加属性时,会将其添加到第一个视图。
How to add Attribute Support to out-of-box Sales Order Entity?
更新:此自定义在2018 R1中完成。
这是我使用演示数据进行的设置。我试图将重复的PXViewNames更改为不同,如注释行所示,但这无济于事。
public class SvrOrdTypeMaint_Extension : PXGraphExtension<SvrOrdTypeMaint>
{
[PXViewName(PX.Objects.CR.Messages.Attributes)]
//[PXViewName("SvcOrdAttributes")]
public CSAttributeGroupList<FSSrvOrdType, FSServiceOrder> SvcOrdMapping;
[PXViewName(PX.Objects.CR.Messages.Attributes)]
//[PXViewName("ApptAttributes")]
public CSAttributeGroupList<FSSrvOrdType, FSAppointment> ApptMapping;
}
服务订单和约会DAC扩展
public class FSServiceOrderExt : PXCacheExtension<FSServiceOrder>
{
#region UsrAttributes
public abstract class usrAttributes : IBqlField { }
[CRAttributesField(typeof(FSServiceOrder.srvOrdType))]
public virtual string[] UsrAttributes { get; set; }
#endregion
}
public class FSAppointmentExt : PXCacheExtension<FSAppointment>
{
#region UsrAttributes
public abstract class usrAttributes : IBqlField { }
[CRAttributesField(typeof(FSAppointment.srvOrdType))]
public virtual string[] UsrAttributes { get; set; }
#endregion
}
“服务订单类型”屏幕中的ASPX代码(FS202300)
<px:PXTabItem Text="Service Order Attributes">
<Template>
<px:PXGrid runat="server" ID="CstPXGrid1" Height="150" MatrixMode="True" SkinID="Details" Width="100%" DataSourceID="ds" BorderWidth="0px">
<Levels>
<px:PXGridLevel DataMember="SvcOrdMapping">
<Columns>
<px:PXGridColumn DataField="IsActive" Type="CheckBox" TextAlign="Center" />
<px:PXGridColumn DataField="AttributeID" Width="81px" LinkCommand="ShowDetails" AutoCallBack="True" />
<px:PXGridColumn DataField="Description" Width="351px" AllowNull="False" />
<px:PXGridColumn DataField="SortOrder" Width="81px" TextAlign="Right" />
<px:PXGridColumn DataField="Required" Type="CheckBox" TextAlign="Center" AllowNull="False" />
<px:PXGridColumn DataField="CSAttribute__IsInternal" Type="CheckBox" TextAlign="Center" AllowNull="True" />
<px:PXGridColumn DataField="ControlType" Width="81px" Type="DropDownList" AllowNull="False" />
<px:PXGridColumn DataField="DefaultValue" Width="100px" AllowNull="True" RenderEditorText="False" />
</Columns>
<RowTemplate>
<px:PXSelector runat="server" ID="CstPXSelector3" DataField="AttributeID" FilterByAllFields="True" AllowEdit="True" CommitChanges="True" />
</RowTemplate>
</px:PXGridLevel>
</Levels>
</px:PXGrid>
</Template>
</px:PXTabItem>
<px:PXTabItem Text="Appointment Attributes">
<Template>
<px:PXGrid runat="server" ID="CstPXGrid2" BorderWidth="0px" Height="150px" MatrixMode="True" SkinID="Details" Width="100%" DataSourceID="ds">
<Levels>
<px:PXGridLevel DataMember="ApptMapping">
<Columns>
<px:PXGridColumn DataField="IsActive" Type="CheckBox" TextAlign="Center" />
<px:PXGridColumn DataField="AttributeID" Width="81px" LinkCommand="ShowDetails" AutoCallBack="True" />
<px:PXGridColumn DataField="Description" Width="351px" AllowNull="False" />
<px:PXGridColumn DataField="SortOrder" Width="81px" TextAlign="Right" />
<px:PXGridColumn DataField="Required" Type="CheckBox" TextAlign="Center" AllowNull="False" />
<px:PXGridColumn DataField="CSAttribute__IsInternal" AllowNull="True" Type="CheckBox" TextAlign="Center" />
<px:PXGridColumn DataField="ControlType" Width="81px" Type="DropDownList" AllowNull="False" />
<px:PXGridColumn DataField="DefaultValue" Width="100px" AllowNull="True" RenderEditorText="False" />
</Columns>
<RowTemplate>
<px:PXSelector runat="server" ID="CstPXSelector4" DataField="AttributeID" CommitChanges="True" AllowEdit="True" FilterByAllFields="True" />
</RowTemplate>
</px:PXGridLevel>
</Levels>
</px:PXGrid>
</Template>
</px:PXTabItem>
注意:我不包括实际的服务订单和约会图以及aspx代码,因为一旦在服务订单类型屏幕中关联了适当的属性,它就可以工作。
在配置时,请按照以下步骤查看问题。 在下图中,我开始为约会属性指定一个属性,这是图形扩展中的第二个声明的视图。当我保存在第二张图像中时,它会显示在第一张视图中。我发现切换图形中的视图声明会切换行为,因此我必须在图形中缺少某些内容。