Reputation: 659
I have the following use case:
Acumatica dropdown, which can have 2 or so values.
e.g.:
-If user selects option a, I need to show PXPanel(ID="panel1")
-If user selects option b, I need to show PXPanel(ID="panel2")
Those PXPanels are inside in one PXFormView, so they have one DataMember Like this :
<px:PXFormView ID="form" runat="server" DataSourceID="ds" DataMember="Waybills">
<px:PXPanel ID="panel1" ..
<px:PXPanel ID="panel2" ..
</px:PXFormView>
Is it possible to conditionally show/hide PXPanels?
As RuslanDev said I can achieve the same effect with PXLayoutRule(GroupCaption), but in that case I can't set caption to 100%, it's equal the first column's width.
With PXPanel :
<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>
With PXLayoutRule :
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="" />
Upvotes: 0
Views: 318
Reputation: 6778
There is no option to hide entire PXPanel from business logic, except conditionally setting Visible to true or false for each input control placed within a 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);
}
For the PXLayoutRule approach, please use Aspx layout as below (the Customer selector has to span across the 3 columns underneath it):
<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" />
Upvotes: 1