#acumatica
#acumatica
Вопрос:
Я создал PXGraphExtension на POLandedCostDocEntry. Я добавил кнопку PXAction. При нажатии кнопки я хочу показать всплывающую панель, чтобы запросить у пользователя код целевой стоимости.
Когда я нажимаю кнопку, я вижу, что появляется диалоговое окно, но элемент управления не отображается. Если я нажму OK, то будет использован первый код стоимости, найденный PXSelect, но у меня никогда не было возможности выбрать другой код. Диалоговое окно выглядит следующим образом:
Вот ASPX для рассматриваемого диалогового окна.
<px:PXSmartPanel runat="server" ID="PanelAskForLCCode" LoadOnDemand="True" Caption="Select LC Code" CaptionVisible="True" Key="LandedCostCodeSelection" AutoRepaint="True" Width="960px">
<px:PXFormView runat="server" ID="CstFormView5" DataMember="LandedCostCodeSelection" DataSourceID="ds" Width="100%" Height="200px" CaptionVisible="False" Caption="LC Selection" SkinID="Transparent">
<Template>
<px:PXLayoutRule runat="server" ID="CstPXLayoutRule6" StartColumn="True" DataMember="landedCostCodeSelection" ControlSize="M" LabelsWidth="S" />
<px:PXSelector runat="server" ID="CstPXSelector8" DataField="LandedCostCodeID" CommitChanges="True" /></Template></px:PXFormView>
<px:PXPanel runat="server" ID="CstPanel2">
<px:PXButton runat="server" ID="CstButton3" Text="Add" DialogResult="OK" />
<px:PXButton runat="server" ID="CstButton4" Text="Cancel" DialogResult="Cancel" /></px:PXPanel></px:PXSmartPanel>
Код для представления, на которое я пытаюсь ссылаться в диалоговом окне:
public PXSelect<LandedCostCode> LandedCostCodeSelection;
Код, который я использую для вызова диалогового окна:
if (LandedCostCodeSelection.AskExt() == WebDialogResult.OK)
{
//rest of code here
}
Редактировать 1:
Я просмотрел aspx, пытаясь сравнить свойства с другими диалоговыми окнами. Я также попытался добавить таблицу «Hello World» — это и тоже не видно.
<px:PXSmartPanel runat="server" ID="PanelAskForLCCode" LoadOnDemand="True" AutoRepaint="True" Key="LandedCostCodeSelection" CaptionVisible="True" Caption="Select Landed Cost Code" AcceptButtonID="CstButton4" CancelButtonID="CstButton5">
<px:PXFormView runat="server" ID="CstFormView2" DataMember="LandedCostCodeSelection" DataSourceID="ds" SkinID="Transparent" Width="100%" Height="100px">
<Template>
<px:PXLayoutRule runat="server" ID="CstPXLayoutRule6" StartColumn="True" ControlSize="XM" LabelsWidth="S" DataMember="LandedCostCodeSelection" />
<px:PXSelector runat="server" ID="CstPXSelector7" DataField="LandedCostCodeID" CommitChanges="True" DataSourceID="ds" />
<px:PXLabel runat="server" ID="CstLabel8" Text="Hello World" />
</Template></px:PXFormView>
<px:PXPanel runat="server" ID="CstPanel3" SkinID="Buttons">
<px:PXButton runat="server" ID="CstButton4" DialogResult="OK" Text="OK" />
<px:PXButton runat="server" ID="CstButton5" DialogResult="Cancel" Text="Cancel" /></px:PXPanel></px:PXSmartPanel>
Редактировать 2:
Итак, я изменил элементы управления, которые я использовал. Форма, как элемент управления верхнего уровня, похоже, не работает.
Я изменил его, чтобы добавить панель, затем форму, а затем элемент управления. И теперь появляется селектор.
Вот .aspx для будущего меня, который забудет обо всем этом.
ПРЕДУПРЕЖДЕНИЕ: на этом этапе мой селектор всегда показывает первую запись в представлении и сразу игнорирует все, что я выбираю с помощью селектора или что я ввожу. Эта проблема является следующей и, я думаю, другим вопросом.
<px:PXSmartPanel runat="server" ID="PanelAskForLCCode" LoadOnDemand="True" AutoRepaint="True" Key="LandedCostCodeSelection" CaptionVisible="True" Caption="Select Landed Cost Code" AcceptButtonID="CstButton4" CancelButtonID="CstButton5">
<px:PXPanel runat="server" ID="CstPanel9" DataMember="LandedCostCodeSelection">
<px:PXFormView runat="server" ID="CstFormView10" DataMember="LandedCostCodeSelection" SkinID="Transparent" Width="100%">
<Template>
<px:PXSelector runat="server" ID="CstPXSelector11" DataField="LandedCostCodeID" CommitChanges="True" DataMember="LandedCostCodeSelection" /></Template></px:PXFormView></px:PXPanel>
<px:PXPanel runat="server" ID="LandedCostCodeSelectionButtons" SkinID="Buttons">
<px:PXButton runat="server" ID="CstButton4" DialogResult="OK" Text="OK" />
<px:PXButton runat="server" ID="CstButton5" DialogResult="Cancel" Text="Cancel" /></px:PXPanel></px:PXSmartPanel>
Комментарии:
1. вы пробовали устанавливать LoadOnDemand = true на smartpanel?
2. @Rick — У меня есть.
Ответ №1:
Попробуйте вместо этого использовать этот aspx:
<px:PXSmartPanel runat="server" ID="PanelAskForLCCode" LoadOnDemand="True" Caption="Select LC Code" CaptionVisible="True" Key="LandedCostCodeSelection" AutoRepaint="True" Width="960px">
<px:PXFormView runat="server" ID="CstFormView5" DataMember="LandedCostCodeSelection" DataSourceID="ds" Width="100%" Height="200px" CaptionVisible="False" Caption="LC Selection" SkinID="Transparent">
<Template>
<px:PXLayoutRule runat="server" ID="CstPXLayoutRule6" StartColumn="True" DataMember="landedCostCodeSelection" ControlSize="M" LabelsWidth="S" />
<px:PXSelector runat="server" ID="CstPXSelector8" DataField="LandedCostCodeID" CommitChanges="True" />
<px:PXPanel runat="server" ID="CstPanel2">
<px:PXButton runat="server" ID="CstButton3" Text="Add" DialogResult="OK" />
<px:PXButton runat="server" ID="CstButton4" Text="Cancel" DialogResult="Cancel" />
</px:PXPanel>
</Template>
</px:PXFormView>
</px:PXSmartPanel>
Если вы не напутали, вставляя его сюда, я считаю, что все ваши элементы управления должны быть частью Template
узла.
Комментарии:
1. Спасибо, что посмотрели. Увы, похоже, дело не в этом. Я заметил, что в вашем PXLayoutRule вы установили для элемента данных значение landedCostCodeSelection со строчной буквой L. Я попробовал обе комбинации. Я решил попробовать добавить элемент управления label, но метка тоже не появилась. Это почти как если бы элементы управления не отображались, а отсутствовали.