Значение Pop не обновляется в пользовательской сетке экрана

#acumatica #acumatica-kb

#acumatica #acumatica-кб

Вопрос:

у нас есть требование обновить выбранное значение во всплывающем окне в сетке пользовательского экрана. кто-нибудь может мне помочь в этом. Спасибо.

Ответ №1:

Я работал над той же функциональностью в других проектах. Приведенный ниже код поможет вам. Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы.

Код кнопки действия

 public PXAction<SOAmazonSetup> GetSchema;
    [PXButton]
    [PXUIField(DisplayName = SOMessages.getSchema, MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Enabled = true)]
    protected virtual IEnumerable getSchema(PXAdapter adapter)
    {
        if (setupview.Current != null)
        {
            if (schemaView.AskExt() == WebDialogResult.OK amp;amp; !string.IsNullOrEmpty(schemaView.Current.AmazonOrderID))
            {
                bool isgetSchema = true;
                SOSchemaFileDetails objSchemaFileDetails = PXSelectJoin<SOSchemaFileDetails, InnerJoin<SOAmazonSetup, On<SOSchemaFileDetails.integrationID,
                    Equal<SOAmazonSetup.integrationID>>>, Where<SOAmazonSetup.integrationID, Equal<Current<SOAmazonSetup.integrationID>>>>.Select(this);
                if (objSchemaFileDetails != null)
                {
                    if (msgView.Ask(schemaView.Current, SOMessages.getSchema, SOMessages.warningMsg, MessageButtons.YesNo, MessageIcon.Warning) == WebDialogResult.No)
                    {
                        isgetSchema = false;
                    }
                }
                if (isgetSchema)
                {
                    // get needed information in local variables
                    string sAmazonOrderID = schemaView.Current.AmazonOrderID;
                    string sIntegrationID = setupview.Current.IntegrationID;
                    PXLongOperation.StartOperation(this, delegate ()
                    {
                        //Create Instance
                        SOAmazonSetupMaint setupGraph = PXGraph.CreateInstance<SOAmazonSetupMaint>();                            
                        setupGraph.setupview.Current = setupGraph.setupview.Search<SOAmazonSetup.integrationID>(sIntegrationID);                                              
                        SOHelper.GetSchemaFromAmazon(setupGraph, clientOrder, sAmazonOrderID);
                        DynamicSchema.ReloadSchema(setupGraph, sIntegrationID);
                    });
                }
            }
            else
            {
                throw new Exception(SOMessages.AmwOrderCannotbeEmpty);
            }
        }
        return adapter.Get();
    }
  

Код SmartPanel:

  <px:PXSmartPanel ID="AMpnlGetSchema" runat="server" Caption="Get Schema"
    CaptionVisible="true" DesignView="Hidden" LoadOnDemand="true" Key="schemaView" CreateOnDemand="false" AutoCallBack-Enabled="true"
    AutoCallBack-Target="formGetSchema" AutoCallBack-Command="Refresh" CallBackMode-CommitChanges="True" CallBackMode-PostData="Page"
    AcceptButtonID="btnOK" Width=" 250px">
    <px:PXFormView ID="AMformGetSchema" runat="server" DataSourceID="ds" Style="z-index: 100" Width="100%" CaptionVisible="False"
        DataMember="schemaView">
        <ContentStyle BackColor="Transparent" BorderStyle="None" />
        <Template>
            <px:PXLayoutRule ID="AMPXLayoutRuleAmazonAPISettings" StartColumn="true" runat="server" ControlSize="M" />
            <px:PXTextEdit CommitChanges="True" runat="server" ID="AMCstPXTextEditAmazonOrderID" DataField="AmazonOrderID"></px:PXTextEdit>
        </Template>
    </px:PXFormView>
    <px:PXPanel ID="AMpnlOK" runat="server" SkinID="Buttons">
        <px:PXButton ID="btnOK" runat="server" DialogResult="OK" Text="OK">
            <AutoCallBack Target="formGetSchema" Command="Save" />
        </px:PXButton>
    </px:PXPanel>
</px:PXSmartPanel>