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行。我怎样才能解决这个问题。
答案 0 :(得分:1)
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();
}
答案 1 :(得分:0)
您可以使用以下代码:
//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();
}