Почему на моей всплывающей панели не отображается мой элемент управления?

#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, но метка тоже не появилась. Это почти как если бы элементы управления не отображались, а отсутствовали.