Acumatica Smart Panel打开时不显示数据

时间:2018-08-03 04:01:41

标签: panel acumatica

我正在尝试在“销售订单”屏幕上创建一个智能面板,该面板将显示与SOLine库存项目相关的项目。

我在库存项目页面上添加了一个选项卡和网格,并使用CFBSUPSale的DAC创建了一个表以创建这种关系。所有这些都按预期工作。

我打开了智能面板,并且显示了所有列,但是没有显示任何数据。我知道需要额外的代码才能将数据从智能面板获取到SOLine,但目前我要做的就是将相关项目显示在面板中。

这是智能面板的html:

<px:PXSmartPanel runat="server" ID="UpSalePanel" Caption="Supplemental Items" Height="500px" Width="1100px" Key="UpSaleData1" CaptionVisible="True" LoadOnDemand="True">
    <px:PXGrid runat="server" ID="UpSaleGrid" AdjustPageSize="Auto" SkinID="Inquire" Width="100%" Height="250px" DataSourceID="ds">
      <Levels>
        <px:PXGridLevel DataMember="UpSaleData1">
          <Columns>
            <px:PXGridColumn DataField="UpSaleID" Width="70" />
            <px:PXGridColumn DataField="UsrSelected" Width="60" />
            <px:PXGridColumn DataField="UpInvID" Width="70" />
            <px:PXGridColumn DataField="UpInvDescr" Width="200" />
            <px:PXGridColumn DataField="RequiredItem" Width="60" />
            <px:PXGridColumn DataField="RequiredQty" Width="70" /></Columns></px:PXGridLevel></Levels></px:PXGrid>
    <px:PXPanel runat="server" ID="PXUpSalePnl">
      <px:PXButton runat="server" ID="CstButton4" Text="Add" />
      <px:PXButton runat="server" ID="CstButton5" Text="Add &amp; Close" DialogResult="OK" />
      <px:PXButton runat="server" ID="CstButton6" Text="Cancel" DialogResult="Cancel" /></px:PXPanel></px:PXSmartPanel>

这是SOOrderEntry代码:

//Retreiving data from CFBSregistrationGroup table and creating RegistrationGroup view.
public PXSelect<CFBSUpSale, Where<CFBSUpSale.invID, Equal<Current<SOLine.inventoryID>>>> UpSaleData1; 
public PXFilter<UpSalePnlDAC> UpSaleData2;

public PXAction<SOOrder> cMDUpSale;
[PXUIField(DisplayName = "Supplemental Items", MapViewRights = PXCacheRights.Select)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable CMDUpSale(PXAdapter adapter)
{
    if (Base.Transactions.Current != null &&
        UpSaleData1.AskExt() == WebDialogResult.OK)
    {
        //Stuff goes here to move data from panel back to SOLine
    }

    return adapter.Get();
}

我遇到的另一个问题是,我认为PXAction行不应该使用SOOrder,而应该是SOLine行,但是当我修改此行时,智能面板将完全不显示。使用现在的代码,该按钮将显示在SOOrder标头和SOLine网格标头上。这是我能够使面板在按下按钮时显示的唯一方法。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

请考虑一下如何在SOOrderEnty(屏幕ID = SO301000)上实现“分配”弹出窗口。不涉及PXAction,而是在px:PXTabItem:

中找到了ActionBar标记。
  <px:PXTabItem Text="Document Details"> 

,然后是一个px:PXToolBarButton,它调用LSSOLine类的BinLotSerial方法:

<px:PXToolBarButton Text="Allocations" Key="cmdLS" CommandName="LSSOLine_binLotSerial" CommandSourceID="ds" DependOnGrid="grid"> 

这是LSSOLine类,它使用PXSelectBase定义BQL Select语句:

public class LSSOLine : LSSelectSOBase<SOLine, SOLineSplit, 
Where<SOLineSplit.orderType, Equal<Current<SOOrder.orderType>>,
And<SOLineSplit.orderNbr, Equal<Current<SOOrder.orderNbr>>>>>

BinLotSerial方法又调用PXSelectBase的View.Ask()提供弹出窗口。

答案 1 :(得分:0)

问题最终导致我们没有正确设置AutoCallBack-Target和AutoCallBack-Command。如果我们手动单击刷新按钮,则显示在网格中的项目,但不会自动显示。这使我们相信该代码无法正常工作。

<px:PXSmartPanel runat="server" ID="UpSalePanel" Caption="Supplemental Items" Height="500px" Width="1100px" Key="UpSaleData1" CaptionVisible="True" AutoCallBack-Target="UpSaleGrid" AutoCallBack-Command="Refresh">