|
![]() |
#1 |
Участник
|
2. Пишем специальную aspx-страницу для вызова загрузчика, например, downloadFile.aspx со следующим содержимым:
Код: <%@ Page Language="C#" Trace="false" %> <%@ Assembly Name="Microsoft.Dynamics.Framework.Portal, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Assembly Name="Microsoft.Dynamics.Framework.Data.Ax, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Assembly Name="Microsoft.Dynamics.Framework.BusinessConnector, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Assembly Name="Microsoft.Dynamics.Framework.BusinessConnector.Proxy, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Assembly Name="Microsoft.Dynamics.Framework.Metadata.AX, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Import Namespace="Microsoft.Dynamics.Framework.Portal" %> <%@ Import Namespace="Microsoft.Dynamics.Framework.Portal.UI" %> <%@ Import Namespace="Microsoft.Dynamics.AX.Framework.Portal.Data" %> <%@ Import Namespace="Microsoft.Dynamics.Framework.BusinessConnector.Proxy" %> <%@ Import Namespace="Microsoft.Dynamics.Framework.BusinessConnector.Session" %> <%@ Import Namespace="Microsoft.Dynamics.Framework.BusinessConnector.Adapter" %> <%@ Import Namespace="Microsoft.Dynamics.AX.Framework.Services.Client" %> <script runat="server"> void Page_Load(object sender, EventArgs e) { AxSharepointWebSession session = null; string fileName = this.Request.QueryString["file"]; try { session = SessionHelper.Instance.GetSharepointSession(); if (session != null) { session.AxaptaAdapter.CallStaticClassMethod("EPDocuGet", "runDownloadFile", fileName); Response.Flush(); } } catch (System.Exception) { // Current design is to not display errors to the user // Errors are stored in the event log for review by the site operator } finally { if (session != null) { SessionHelper.Instance.ReleaseSharepointSession(session); } } } </script> Как видно, при загрузке этой страницы будет происходить получение имени файла из параметров запроса и вызов созданного в п. 1 метода с передачей ему имени файла. 3. Создаем в АОТ ссылку на эту страницу. Web\Web Menu ITems\URLs Назовем ее DownloadFile. В свойстве URL пишем: _layouts/ep/downloadFile.aspx |
|
![]() |
#2 |
Участник
|
4. Теперь все готово к тестированию.
Создаем файл для загрузки и кладем его на сервер, например, в c:\temp\test.xls Будем его скачивать. 5. Далее нам понадобится VisualStudio. Создаем веб-контрол для веб-парт страницы. Кладем туда кнопку и в обработчике нажатия кнопки пишем код: Код: AxUrlMenuItem getFileUrl = new AxUrlMenuItem("DownloadFile"); getFileUrl.ExtraParams.Add("file", "c:\\temp\\test.xls"); DialogHelper.Navigate(getFileUrl, this); Код: protected void WebPart_ActionMenuItemClicked(object sender, ActionMenuItemEventArgs e) { string fileName = string.Empty; if (e.MenuItem.MenuItemAOTName == "WayBill") { fileName = (string)this.RunDatasetMethod("makeWayBill"); // вызов метода, который формирует отчет и кладет файл отчета в папку на сервере } if (!string.IsNullOrEmpty(fileName)) { AxUrlMenuItem getFileUrl = new AxUrlMenuItem("DownloadFile"); getFileUrl.ExtraParams.Add("file", fileName); DialogHelper.Navigate(getFileUrl, this); } } private object RunDatasetMethod(string methodName, params object[] paramList) { object res = null; try { if (paramList.Length > 0) { res = this.AxDataSource1.GetDataSet().DataSetRun.AxaptaObjectAdapter.Call(methodName, paramList); } else { res = this.AxDataSource1.GetDataSet().DataSetRun.AxaptaObjectAdapter.Call(methodName); } } catch (System.Exception ex) { AxExceptionCategory exceptionCategory; if (!AxControlExceptionHandler.TryHandleException(this, ex, out exceptionCategory)) { // Throw the fatal exception throw; } } return res; } Спасибо за внимание! |
|
|
За это сообщение автора поблагодарили: MikeR (5), gl00mie (5), (1). |
![]() |
#3 |
Возьми свет!!!
|
перенес в четверку. что то не то творится с разрешениями файлов.
__________________
Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!! |
|
Теги |
ax2009, ax2012, enterprise portal, mime types, законченный пример |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|