Asked by:
C# MVC list of records show multiple rdlcs 1 for each record.

Question
-
User-544325736 posted
Hello everyone,
I have a list of records, When I went to put my list in as a report data source to my rdlc report it said my datasource must be a data table or 2 other options it gave. I turned my list into a datatable and now when I insert that as my data source I get no errors and my controller action completes but my ‘return file’ never opens up a new report or anything for my record. If I try to just insert 1 record I get the report opened as an rdlc report.
<input type="button" class="btn btn-primary" name="command" id="btnGetChecks" value="Generate Selected" /> $('#btnGetChecks').on('click', function () { var arrChkBoxes = []; var arrSelectedQIDs = []; var quoteid = $(this).attr("value"); var chkboxtable = $('#maintbl'); var chktablebody = chkboxtable.find('#maintblbody'); $("input:checked").each(function (index, value) { arrChkBoxes.push($(value).val()); }); // Push all QuoteIDs into new array $.each(arrChkBoxes, function (key, value) { if (IsPositiveInteger(value)) { arrSelectedQIDs.push(value); } }); $.ajax({ type: "GET", url: "/Service/GeneratePreviewReports/", contentType: "application/json; charset=utf-8", traditional: true, data: { "quoteIDs": arrSelectedQIDs }, success: function () { alert("success"); }, error: function (request, status, error) { alert("error " + request.responseText); } }); //alert(arrSelectedQIDs); }); public ActionResult GeneratePreviewReports(int[] quoteIDs) { List<ServiceQuote> lstQuotes = new List<ServiceQuote>(); // servicequote same fields as 'Service_Fields' //for(int i=0; i<quoteIDs.Length-1; i++) //{ var quote = context.ServiceQuotes.Where(x => x.QuoteID == quoteIDs[i]).fi } if(quoteIDs != null) { foreach(var qid in quoteIDs) { var quote = context.ServiceQuotes.Where(x => x.QuoteID == qid).FirstOrDefault(); lstQuotes.Add(quote); } } //TRACKER_TESTDataSetTableAdapters.Service_FieldsTableAdapter tableAdapter = new TRACKER_TESTDataSetTableAdapters.Service_FieldsTableAdapter(); LocalReport localReport = new LocalReport() { ReportPath = Server.MapPath("~/ReportForms/VirtualService3.rdlc") }; List<TRACKER_TESTDataSet.Service_FieldsRow> rows = new List<TRACKER_TESTDataSet.Service_FieldsRow>(); foreach(var item in lstQuotes) { var itemTable = CreateDT(item);//CreateDataTable(item); // rows.Add(tableAdapter.Fill(item)) ReportDataSource reportDataSource = new ReportDataSource("Service_Fields", itemTable); localReport.DataSources.Add(reportDataSource); // command specifies whether its a PDF EXCEL WORD IMAGE doc string command = "PDF"; string reportType = command; string mimeType, encoding, fileNameExtension; string deviceInfo = "<DeviceInfo>" + " <OutputFormat>" + command + "</OutputFormat>" + " <PageWidth>8.5in</PageWidth>" + " <PageHeight>11in</PageHeight>" + " <MarginTop>0.5in</MarginTop>" + " <MarginLeft>0.3in</MarginLeft>" + " <MarginRight>0.3in</MarginRight>" + " <MarginBottom>0.5</MarginBottom>" + "</DeviceInfo>"; Warning[] warnings; string[] streams; byte[] renderedBytes; renderedBytes = localReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings); return File(renderedBytes, mimeType); } return RedirectToAction("VirtualService"); } private DataTable CreateDT(object obj) { if(obj != null) { Type t = obj.GetType(); DataTable dt = new DataTable(t.Name); foreach(PropertyInfo pi in t.GetProperties()) { dt.Columns.Add(new DataColumn(pi.Name)); } DataRow dr = dt.NewRow(); foreach(DataColumn dc in dt.Columns) { dr[dc.ColumnName] = obj.GetType().GetProperty(dc.ColumnName).GetValue(obj, null); } dt.Rows.Add(dr); return dt; } return null; }
Thursday, October 31, 2019 9:54 PM
All replies
-
User-17257777 posted
Hi ExceedingLife,
From your description, I can't reproduce your problem since the lack of codes. Could you please show us the entire html codes and the model related.
Best Regards,
Jiadong Meng
Friday, November 1, 2019 9:56 AM