Показать сообщение отдельно
Старый 09.08.2012, 13:00   #4  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Регистрация: 02.04.2010
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;
    }
Таким образом, получаем универсальный механизм для работы с файлами в Ax 2012 EnterprisePortal.

Спасибо за внимание!
За это сообщение автора поблагодарили: MikeR (5), gl00mie (5),  (1).