2017-10-13 135 views
0

我有以下用例:如何在Acumatica屏幕中有条件地隐藏PXPanel?

Acumatica下拉菜单,它可以有2个左右的值。

例如:

- 如果用户选择选项,我需要显示PXPanel(ID = “PANEL1”)

- 如果用户选择选项B,I需要显示PXPanel(ID =“是Panel2 “)

那些PXPanels是里面一个PXFormView,让他们有一个数据成员像这样:

 <px:PXFormView ID="form" runat="server" DataSourceID="ds" DataMember="Waybills"> 

       <px:PXPanel ID="panel1" .. 
       <px:PXPanel ID="panel2" .. 

    </px:PXFormView> 

是否可以有条件地显示/隐藏PXPanels?

正如RuslanDev所说,我可以用PXLayoutRule(GroupCaption)实现同样的效果,但在这种情况下,我无法将标题设置为100%,它等于第一列的宽度。

随着PXPanel:

enter image description here apsx:

<px:PXPanel ID="panel3" runat="server" Caption="Buyer (Receiver)" RenderStyle="Fieldset" AlreadyLocalized="False" DataMember="" > 

     <px:PXLayoutRule runat="server" StartRow="True" StartColumn="True" ColumnWidth="XM" /> 
     <px:PXSegmentMask CommitChanges="True" ID="edCustomerID" runat="server" DataField="CustomerID" DataSourceID="ds" /> 

     <px:PXLayoutRule runat="server" StartRow="True" StartColumn="True" ColumnWidth="XM" /> 
     <px:PXTextEdit ID="edRecipientTaxRegistrationID" runat="server" DataField="RecipientTaxRegistrationID" Enabled="False" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 
     <px:PXCheckBox ID="edRecipientIsForeignCitizen" runat="server" DataField="RecipientIsForeignCitizen" AlreadyLocalized="False" Enabled="false"/> 

     <px:PXLayoutRule runat="server" StartColumn="True" ColumnWidth="XM" /> 
     <px:PXTextEdit ID="edRecipientName" runat="server" DataField="RecipientName" Enabled="False" AlreadyLocalized="False" DefaultLocale="" /> 


     <px:PXLayoutRule runat="server" StartColumn="True" ColumnWidth="XM" /> 
     <px:PXTextEdit ID="edRecipientDestinationAddress" runat="server" DataField="RecipientDestinationAddress" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 

    </px:PXPanel> 

随着PXLayoutRule:

enter image description here

apsx:

<px:PXLayoutRule runat="server" StartRow="True" StartColumn="True" GroupCaption="Buyer (Receiver)" StartGroup="true" ColumnSpan="3"/> 

       <px:PXLayoutRule runat="server" StartColumn="True" ColumnWidth="XM" /> 

       <px:PXSegmentMask CommitChanges="True" ID="edCustomerID" runat="server" DataField="CustomerID" DataSourceID="ds" /> 

       <px:PXLayoutRule runat="server" StartRow="True" StartColumn="True" ColumnWidth="XM" /> 
       <px:PXTextEdit ID="edRecipientTaxRegistrationID" runat="server" DataField="RecipientTaxRegistrationID" Enabled="False" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 
       <px:PXCheckBox ID="edRecipientIsForeignCitizen" runat="server" DataField="RecipientIsForeignCitizen" AlreadyLocalized="False" Enabled="false"/> 

       <px:PXLayoutRule runat="server" StartColumn="True" ColumnWidth="XM" /> 
       <px:PXTextEdit ID="edRecipientName" runat="server" DataField="RecipientName" Enabled="False" AlreadyLocalized="False" DefaultLocale="" /> 


       <px:PXLayoutRule runat="server" StartColumn="True" ColumnWidth="XM" /> 
       <px:PXTextEdit ID="edRecipientDestinationAddress" runat="server" DataField="RecipientDestinationAddress" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 

回答

0

使用,而不是PXPanel PXFormView解决所有的问题。

1

没有选择隐藏从业务逻辑整个PXPanel,除了有条件地设定可见用于放置一个PXPanel内的每个输入控制:

protected virtual void ARFinCharge_RowSelected(PXCache cache, PXRowSelectedEventArgs e) 
{ 
    ARFinCharge fin = e.Row as ARFinCharge; 
    if (fin == null) return; 

    PXUIFieldAttribute.SetVisible<ARFinCharge.fixedAmount>(cache, fin, fin.ChargingMethod == OverdueChargingMethod.FixedAmount); 
    PXUIFieldAttribute.SetVisible<ARFinCharge.lineThreshold>(cache, fin, fin.ChargingMethod == OverdueChargingMethod.PercentWithThreshold); 
    PXUIFieldAttribute.SetVisible<ARFinCharge.minFinChargeAmount>(cache, fin, fin.ChargingMethod == OverdueChargingMethod.PercentWithMinAmount); 
} 

对于PXLayoutRule方法,请使用如下的Aspx布局(客户选择器必须跨越其下方的3列):

<px:PXLayoutRule runat="server" StartRow="True" StartGroup="true" GroupCaption="Buyer (Receiver)" /> 
<px:PXSegmentMask CommitChanges="True" ID="edCustomerID" runat="server" DataField="CustomerID" /> 
<px:PXLayoutRule runat="server" Merge="True" /> 
<px:PXTextEdit ID="edRecipientTaxRegistrationID" Size="M" runat="server" DataField="RecipientTaxRegistrationID" Enabled="False" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 
<px:PXTextEdit ID="edRecipientName" runat="server" Size="M" DataField="RecipientName" Enabled="False" AlreadyLocalized="False" DefaultLocale="" /> 
<px:PXTextEdit ID="edRecipientDestinationAddress" Size="M" runat="server" DataField="RecipientDestinationAddress" CommitChanges="True" AlreadyLocalized="False" DefaultLocale="" /> 
<px:PXLayoutRule runat="server" Merge="False" /> 
<px:PXCheckBox ID="edRecipientIsForeignCitizen" runat="server" DataField="RecipientIsForeignCitizen" AlreadyLocalized="False" Enabled="false"/> 
<px:PXLayoutRule runat="server" EndGroup="true" /> 

enter image description here

+0

我确实,但面板标题仍然存在。我也想隐藏该标题 – user3857731

+0

您是否尝试过使用PXLayoutRule而不是PXPanel?我相信与GroupCaption属性指定的PXLayoutRule应该看起来相同PXPanel – RuslanDev

+0

我做了,它的工作原理,但我面临其他问题。我不能将PXLayoutRule设置为100%或者例如colspan 3 ... – user3857731