2016-11-01 4 views
0

Мне был добавлен код расширения кода C# для загрузки файла excel для импорта в всплывающее окно «Распределение» на экране «Приобретение покупок». То, что не было включено, это PXSmartPanel, который, как представляется, используется в качестве диалога. Любая помощь будет оценена в отношении того, как настроить/настроить эту интеллектуальную панель для того, что было предусмотрено в приведенном коде. линия в вопросе такова:Как включить диалоговое окно для загрузки файла

если (this.NewRevisionPanel.AskExt() == WebDialogResult.OK)

код ниже:

public class POReceiptEntryGraphExtension : PXGraphExtension<PO.POReceiptEntry> 
{ 

    public PXSelect<PO.POReceipt> NewRevisionPanel; 

    public PXAction<PO.POReceipt> ImportAllocations; 
    [PXUIField(DisplayName = "Import Allocations", MapEnableRights = PXCacheRights.Update, 
          MapViewRights = PXCacheRights.Update, Enabled = true)] 
    [PXButton()] 
    public virtual void importAllocations() 
    { 
     try 
     { 
      if (Base.transactions.Current != null) 
      { 
       if (Base.splits.Select().Count == 0) 
       { 
        if (this.NewRevisionPanel.AskExt() == WebDialogResult.OK) 
        { 
         const string PanelSessionKey = "ImportStatementProtoFile"; 
         PX.SM.FileInfo info = PX.Common.PXContext.SessionTyped<PXSessionStatePXData>().FileInfo[PanelSessionKey] as PX.SM.FileInfo; 
         System.Web.HttpContext.Current.Session.Remove(PanelSessionKey); 

         if (info != null) 
         { 
          byte[] filedata = info.BinData; 
          using (NVExcelReader reader = new NVExcelReader()) 
          { 
           Dictionary<UInt32, string[]> data = reader.loadWorksheet(filedata); 
           foreach (string[] textArray in data.Values) 
           { 
            Base.splits.Insert(new PO.POReceiptLineSplit() 
            { 
             InventoryID = Base.transactions.Current.InventoryID, 
             LocationID = Base.transactions.Current.LocationID, 
             LotSerialNbr = textArray[2], 
             Qty = Decimal.Parse(textArray[3]) 
            }); 
           } 
          } 
         } 
        } 
       } 
      } 
      Base.Actions["LSPOReceiptLine_binLotSerial"].Press(); 
     } 
     catch (FileFormatException fileFormat) 
     { 
      throw new PXException(String.Format("Incorrect file format. File must be of type .xlsx", fileFormat.Message)); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
} 

ответ

1

Вы должны объявить PXUploadDialog элемент ваш файл aspx:

<px:PXUploadDialog ID="ImportPanel" runat="server" Key="NewRevisionPanel" Height="120px" Style="position: static" Width="560px" 
       Caption="Import XML File (*.xml)" AutoSaveFile="false" RenderCheckIn="false" SessionKey="ImportStatementProtoFile" /> 
+0

Большое спасибо Руслан - это прекрасно. Это был недостающий кусок. – pmfith