2011-02-09 15 views
2
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クエリの結果をレポートのデータソースとして使用したいと思います。ただし、81行が含まれていても、IEnumerable検査の最初の行のみがレポートに表示されます。どのように私はこれを修正することができます。Microsoftレポートのデータソースとしてlinqを使用する方法

+0

をサイドノート '一覧は'すでに 'IEnumerable'を実装して、' exams.AsEnumerableを() 'を使用する必要はありません、単に試験に合格する – BrokenGlass

+0

まず、あなたはどのORMを使用していますか? Linq-to-SQL?エンティティフレームワーク(Linq-to-Entities)?また、「Microsoftレポート」 - SQL Server Reporting Servicesレポートを意味しますか? –

+0

私は(かなり)同じコードを使用しており、問題なく動作します。 '.rdlc'ファイルはどのように見えますか?あなたはテーブルを使用していますか?あなたの 'TextBox'は' List'にありますか? 1つの行のみを表示するようにコレクションを制限する条件があります。 –

答えて

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(); 
    } 
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(); 
} 
関連する問題