Как использовать linq в качестве источника данных для отчета Microsoft - PullRequest
2 голосов
/ 09 февраля 2011
var exams = (from appointment in appointments select new {coursecode = (appointment.Tag as exam).ID}).ToList();

rpt.LocalReport.DataSources.Add(new ReportDataSource("dsExam". exams.AsEnumerable()));
rpt.ProcessingMode = ProcessingMode.Local;
rpt.RefreshReport();

Каждый объект встречи содержит объект экзамена. Я хотел бы использовать результаты запроса linq в качестве источника данных моего отчета. Однако в отчете отображается только первая строка в экзаменах IEnumerable, хотя он содержит 81 строку. Как я могу это исправить.

Ответы [ 2 ]

1 голос
/ 31 октября 2011
var exams = (from appointment in appointments
               select new
                    {
                          ((Exam)appointment.CustomFields["Field"]).Id,
                          ((Exam)appointment.CustomFields["Field"]).Name,
                          ((Exam)appointment.CustomFields["Field"]).Date,
                                     ((Exam)appointment.CustomFields["Field"]).Period.StartTime,
                                     ((Exam)appointment.CustomFields["Field"]).Period.EndTime,
                                     Location = ((Exam)appointment.CustomFields["Field"]).Location.Name
                                });

        SetDataSource(exams);


    private void SetDataSource(object exams)
    {          
        scheduleBindingSource.DataSource = exams;
        this.rpTTViewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
        this.rpTTViewer.RefreshReport(); 
    }
0 голосов
/ 12 июля 2012

Вы можете использовать код как показано ниже:

//Create a dataset typed
DataSet ds = new DataSet();

//Constructor a dataset from Dataset Model, dataset use for crystal report
DataSet1.print_salesDataTable tb = new DataSet1.print_salesDataTable();

//Queries with the conditions is ID
QLGiayDepEntities list = new QLGiayDepEntities();
var result = (from n in list.print_sales
              where n.OrderID == txtID.Text
              select n).ToList();

//Fill result to table
foreach (print_sales item in result)
{
    tb.Rows.Add(
        item.OrderID,
        item.DateOrder,
        item.NameEmployee,
        item.Total,
        item.Recieved,
        item.Discount,
        item.Sum,
        item.FromCustomer,
        item.Notes,
        item.Barcode,
        item.Name,
        item.ColorName,
        item.SizeID,
        item.Quantity,
        item.Price,
        item.SubTotal);
}

//checking to print
if (result == null)
{
    MessageBox.Show("null");
}
else
{
    ds.Tables.Add(tb);
    CrystalReportSales1.SetDataSource(ds);
    crystalReportViewer1.ReportSource = CrystalReportSales1;
    crystalReportViewer1.PrintReport();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...