Crystal report проекта ASP MVC не отображает значения из базы данных
Всем Привет,
Я пытаюсь отобразить отчет crystal в своем проекте ASP MVC. вот мой метод в классе SalesController,
Я попытался использовать объединение четырех таблиц вместе и результирующий запрос анонимного типа, который я хотел установить в пользовательский набор данных. Тот же набор данных, который я хочу назначить в качестве источника данных отчета. PDF-файл успешно загружается с другими значениями полей, за исключением данных из базы данных.Я думаю, что есть какая-то ошибка с datasourse. Поэтому, пожалуйста, кто-нибудь, помогите мне в этом деле.
public ActionResult DetailsReport(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } DataSetSales ds = new DataSetSales(); var SalesDetails = from s in db.Sales join sd in db.SaleDescs on s.Id equals sd.SaleId join p in db.Products on sd.ProductId equals p.Id join c in db.Categories on p.CategoryId equals c.Id join x in db.People on s.CustomerId equals x.Id where s.Id == 41 select new { id = s.Id, AccntInvoiceNo = s.AccntInvoiceNo, SaleDate = s.SaleDate, NetTotal = s.SubTotal, Discount = s.Discount, NetAmount = s.NetAmount, CustomerName = x.FName + " " + x.LName, SaleId = sd.Id, PName = p.PName, Quantity = sd.Quantity, UnitPrice = sd.UnitPrice, SubTotal = sd.SubTotal, SaleType = c.CatName }; DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(System.Int32)); dt.Columns.Add("AccntInvoiceNo", typeof(System.String)); dt.Columns.Add("SaleDate", typeof(System.DateTime)); dt.Columns.Add("NetTotal", typeof(System.Decimal)); dt.Columns.Add("Discount", typeof(System.Decimal)); dt.Columns.Add("NetAmount", typeof(System.Decimal)); dt.Columns.Add("CustomerName", typeof(System.String)); dt.Columns.Add("SaleId", typeof(System.Int32)); dt.Columns.Add("PName", typeof(System.String)); dt.Columns.Add("Quantity", typeof(System.Int32)); dt.Columns.Add("UnitPrice", typeof(System.Decimal)); dt.Columns.Add("SubTotal", typeof(System.Decimal)); dt.Columns.Add("SaleType", typeof(System.String)); List<DataRow> list = new List<DataRow>(); foreach (var t in SalesDetails.ToList()) { var row = dt.NewRow(); row.SetField<int>("Id", t.id); row.SetField<string>("AccntInvoiceNo", t.AccntInvoiceNo); row.SetField<DateTime>("SaleDate", t.SaleDate); row.SetField<decimal?>("NetTotal", t.NetTotal); row.SetField<decimal?>("Discount", t.Discount); row.SetField<Decimal>("NetAmount", t.NetAmount); row.SetField<string>("CustomerName", t.CustomerName); row.SetField<int>("SaleId", t.SaleId); row.SetField<string>("PName", t.PName); row.SetField<string>("Quantity", t.Quantity); row.SetField<decimal>("UnitPrice", t.UnitPrice); row.SetField<decimal>("SubTotal", t.SubTotal); row.SetField<string>("SaleType", t.SaleType); list.Add(row); } dt = list.CopyToDataTable(); // CRSingleSale cr = new CRSingleSale(); ReportDocument rd = new ReportDocument(); rd.Load(Path.Combine(Server.MapPath("~/Reports"), "CRSingleSale.rpt")); rd.SetDataSource(dt); Response.Buffer = false; Response.ClearContent(); Response.ClearHeaders(); try { Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf", "CRSingleSale.pdf"); } catch (Exception ex) { throw; } }
это часть кода страницы просмотра;
@формат HTML.Actionlink панели("экспорт отчета", "DetailsReport", новый { идентификатор = модель.Айди })
Что я уже пробовал:
Я попытался использовать объединение четырех таблиц вместе и результирующий запрос анонимного типа, который я хотел установить в пользовательский набор данных. Тот же набор данных, который я хочу назначить в качестве источника данных отчета. PDF-файл успешно загружается с другими значениями полей, за исключением данных из базы данных.Я думаю, что есть какая-то ошибка с datasourse. Поэтому, пожалуйста, кто-нибудь, помогите мне в этом деле.