Объединить 2 таблицы в программе просмотра отчетов в ASP.NET MVC - PullRequest
0 голосов
/ 11 апреля 2019

Я создаю средство просмотра отчетов в ASP.NET MVC, между двумя таблицами.

Я создаю адаптер для получения всех данных в отчете следующим образом:

введите описание изображения здесь

Но когда я экспортирую отчет, получаемый таким образом, expence_type не показывает данные:

введите описание изображения здесь

Этомой код:

 public ActionResult Reports(string ReportType)
    {
        LocalReport localreport = new LocalReport();
        localreport.ReportPath = Server.MapPath("~/Reports/ExpenseReport.rdlc");



        ReportDataSource reportDataSource = new ReportDataSource();

        reportDataSource.Name = "DataSetE";

        var dataList = (from ed in _context.ExpenseDetails
         join e in _context.Expenses on ed.ExpensesId equals e.Expenses_Id

     select new { id = ed.ExpenseDetails_Id, amount = ed.Amount, expense = ed.DateExpense, eid = ed.ExpensesId, expenseType = e.Expenses_Type }).ToList();

        reportDataSource.Value = dataList;


        reportDataSource.Value = _context.ExpenseDetails.ToList();

        localreport.DataSources.Add(reportDataSource);

        string reportType = ReportType;
        string mimeType;
        string encoding;
        string fileNameExtension;

        if (reportType == "Excel")
        {
            fileNameExtension = "xlsx";
        }

        if (reportType == "Word")
        {
            fileNameExtension = "docx";
        }

        if (reportType == "PDF")
        {
            fileNameExtension = "pdf";
        }

        else
        {
            fileNameExtension = "jpg";

        }

        string[] streams;
        Warning[] warnings;
        byte[] renderedByte;

        renderedByte = localreport.Render(reportType, "", out mimeType, out encoding, out fileNameExtension, out streams, out warnings);

        Response.AddHeader("content-disposition", "attachment;filename = expens_report." + fileNameExtension);

        return File(renderedByte, fileNameExtension);
    }

Сведения о расходах Модели:

public class ExpenseDetails
{
    [Key]
    public int ExpenseDetails_Id { get; set; }

    public double Amount { get; set; }

    public DateTime DateExpense { get; set; }

    public int ExpensesId { get; set; }

    [ForeignKey("ExpensesId")]
    public virtual Expenses expenses { get; set; }
}

Модели расходов:

   public class Expenses
{
    [Key]
    public int Expenses_Id { get; set; }
    public string Expenses_Type { get; set; }
}

Как мне показать Expence_Type?

reportDataSource.Value = _context.ExpenseDetails.ToList();

Я пытаюсь добавить другую таблицу в этот код, но она не возвращается.

введите описание изображения здесь

введите описание изображения здесь

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете создать объединение между двумя таблицами и назначить его в качестве источника данных отчета

Попробуйте это

var dataList = (from ed in _context.ExpenseDetails
                 join e in _context.Expenses on ed.ExpensesId equals e.Expenses_Id 
                 select new {
                     id = ed.ExpenseDetails_Id ,
                     amount = ed.Amount ,
                     expense = ed.DateExpense ,
                     eid = ed.ExpensesId ,
                     expenseType = e.Expenses_Type 
                 }).ToList();

и добавьте это

reportDataSource.Value = dataList ; 
...