or
<script type="text/javascript">function startReport(result) {$.ajax({url: "HTTPHandlers/TagExportHandler.ashx",context: document.body,success: function(){alert("done");//Eventually put code to block UI and etc while report is rendering...}});}</script>public void ProcessRequest(HttpContext context){using (var db = new TIPWebITDataContext()){string _exportContent = "";int[] userDepartments = ((User)HttpContext.Current.Session["currentUser"]).Departments.ToArray();List<TagDetailsDepartments> tagsModelCsvDepartmentses = null;List<TagDetailsNonDepartments> tagModelCsvNonDepartmentses = null;var data = GetTagDetails(db, "");CsvContext cc = new CsvContext();using (var writer = new System.IO.StreamWriter(context.Response.OutputStream)){CsvFileDescription output = new CsvFileDescription{QuoteAllFields = true,EnforceCsvColumnAttribute = true};context.Response.AddHeader("content-disposition", "attachment; filename=TagExport.csv");context.Response.ContentType = "text/csv";if (userDepartments.Count() > 1){tagsModelCsvDepartmentses = ((IQueryable<TagDetailsDepartments>)data).ToList();cc.Write(tagsModelCsvDepartmentses.ToList(), writer, output);}else{tagModelCsvNonDepartmentses = ((IQueryable<TagDetailsNonDepartments>)data).ToList();cc.Write(tagModelCsvNonDepartmentses.ToList(), writer, output);}context.Response.StatusCode = 200;cc = null;writer.Flush();output = null;}data = null;tagsModelCsvDepartmentses = null;tagModelCsvNonDepartmentses = null;userDepartments = null;// context.Session.Add("TagExport", "Complete");GC.Collect();GC.WaitForPendingFinalizers();}}
