So I posted a question on the ASP.NET forums @ Microsoft and I have not gotten any useful suggestions on how to solve this issue. I am hoping perhaps a telerik tool might be able to solve this issue...
If you know of something please point me in the right direction...
here is the original post.. I have copied it below...
QUICK COMMENT:So I am currently trying to figure out how to use AJAX, JQUERY, BLOCKUI and ASHX handlers to generate a very large report in CSV. The report generation is spawned by clicking on a hyperlink which will call a javascript function that will execute a AJAX call. As of right now I get the ajax call to execute, but I have not yet figured out how to get the ajax success method to dump the report to the calling client browser yet.
How do I get the ashx handler to work with the master page to generate a report when the user clicks on the hyperlink.I can get it to work if I just route the hyper link control directly to the ashx page, but I eventually need to add code to block the UI while this report being generated. In the ajax, I am thinking I need to do some type of action to force the browser to kick out the report.. Just not sure what...I have a master page with the following code:
In the markup I have a asp:hyperlink control... <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/HTTPHandlers/TagExportHandler.ashx" OnClick="startReport('');">Tag Export 2</asp:HyperLink>
Then I have a ASHX control that does the following..
Warren
If you know of something please point me in the right direction...
here is the original post.. I have copied it below...
QUICK COMMENT:So I am currently trying to figure out how to use AJAX, JQUERY, BLOCKUI and ASHX handlers to generate a very large report in CSV. The report generation is spawned by clicking on a hyperlink which will call a javascript function that will execute a AJAX call. As of right now I get the ajax call to execute, but I have not yet figured out how to get the ajax success method to dump the report to the calling client browser yet.
How do I get the ashx handler to work with the master page to generate a report when the user clicks on the hyperlink.I can get it to work if I just route the hyper link control directly to the ashx page, but I eventually need to add code to block the UI while this report being generated. In the ajax, I am thinking I need to do some type of action to force the browser to kick out the report.. Just not sure what...I have a master page with the following code:
<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>In the markup I have a asp:hyperlink control... <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/HTTPHandlers/TagExportHandler.ashx" OnClick="startReport('');">Tag Export 2</asp:HyperLink>
Then I have a ASHX control that does the following..
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();}}Warren