Экспорт в Excel - IE8 - PullRequest
       23

Экспорт в Excel - IE8

0 голосов
/ 18 апреля 2011

Следующий код экспорта работает в IE7 и FF, но не в IE8. Что нужно изменить, чтобы это работало в IE8?

public override void ExecuteResult(ControllerContext context)
        {
            this.WriteFile(HtmlTable);
        }

        void WriteFile(string content)
        {
            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            context.Response.AddHeader("content-disposition", "attachment;filename=\"" + _fileName + "\"");
            context.Response.Charset = "";
            //context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.ContentType = "application/ms-excel";
            context.Response.Write(content);
            context.Response.End();
        }

Вот как мы называем это с внешнего интерфейса:

function resultsGridExportToExcel()
        {
            var exportUrl = '/extranet/mvc/Indications.cfc/SavedIndicationsExportToExcel?id=3'; 
            var postData = jQuery('#resultsGrid').jqGrid('getGridParam', 'postData'); 
            $.each(postData, function(key, value) 
            { 
                exportUrl += '&'+key+'='+encodeURIComponent(value); 
            }); 
            $('#SaveIndicationsExportForm').attr('action', exportUrl).submit(); 
        }

А вот метод контроллера:

[HttpPost]
        public System.Web.Mvc.ActionResult SavedIndicationsExportToExcel(string sidx, string sord, int page, int rows)
        {
            SavedIndication indication = new SavedIndication();

            var jqGridData = indication.GetSavedIndications(sidx, sord, 1, Int32.MaxValue);
            var gridDefinition = SavedIndication.GridDefinition;

            string filename = "Indications Calculator - Saved Indications";

            string htmlTable = jqGridData.RenderHtmlTable(gridDefinition.RetrieveColumnHeaders());
            htmlTable = Chatham.Web.Controllers.ExcelResult<string>.RemoveImages(htmlTable);
            return new ExcelResult() { FileName = filename, HtmlTable = htmlTable };
        }

Он полностью отлаживается, без ошибок, работает нормально, но не генерирует вывод в IE8, только в IE7 и FF

1 Ответ

0 голосов
/ 22 апреля 2011

Похоже, это была проблема с IETester.

Он не любит всплывающие окна, и для загрузки должен был появиться экран. На РЕАЛЬНОЙ машине IE это сработало.

...