2011-07-12 37 views
0

我打算用* .rdlc在wpf中創建打印頁面。 爲此,我創建了一個類(以下是此代碼)。 我綁定類報告,但是當我運行該程序時,會出現以下消息:rdlc的打印問題

數據源瞬間尚未對數據源「數據集1」

class rpt_insurance 
{ 
    private string _insurance; 
    private int _count_print; 
    private int _sum_tariff; 
    private int _lot_org; 

    public string insurance 
    { 
     get { return _insurance; } 
     set { _insurance = value; } 
    } 
    public int count_print 
    { 
     get { return _count_print; } 
     set { _count_print = value; } 
    } 
    public int sum_tariff 
    { 
     get { return _sum_tariff; } 
     set { _sum_tariff = value; } 
    } 
    public int lot_org 
    { 
     get { return _lot_org; } 
     set { _lot_org = value; } 
    } 


    public DataTable report_insurance(string from_date,string to_date) 
    { 
     using (doctorEntities de = new doctorEntities()) 
     { 
      var print = (from Table_infobase_print tip in de.Table_infobase_print 
          where tip.Print_date.CompareTo(from_date) > 0 && tip.Print_date.CompareTo(to_date) < 0 
          select tip).ToList(); 

      var insurance = (from Table_insurance_org tio in de.Table_insurance_org 
          select tio).ToList(); 
      List<rpt_insurance> lri = new List<rpt_insurance>(); 
      foreach (var insurance_row in insurance) 
      { 
       rpt_insurance ri = new rpt_insurance(); 
       int number = 0; 
       foreach (var print_row in print) 
       { 
        if(print_row.insurance_org==insurance_row.org_name) 
        { 
         number++; 
         ri.insurance = print_row.insurance_org; 
         ri.count_print = number; 
         ri.sum_tariff = ri.sum_tariff + print_row.sum_tariff; 
         ri.lot_org=lot_org+(print_row.sum_tariff-print_row.sum_lot_patient); 
        } 
       } 
       if (ri.insurance != null) 
       { 
        lri.Add(ri); 
       } 
      } 

      DataTable dt = new DataTable(); 
      dt = new DataTable(); 
      dt.Columns.Add("cinsurance"); 
      dt.Columns.Add("ccount_print"); 
      dt.Columns.Add("csum_tariff"); 
      dt.Columns.Add("clot_org"); 
      for (int i = 0; i < lri.Count; i++) 
      { 
       DataRow dr = dt.NewRow(); 
       dr["cinsurance"] = lri[i].insurance; 
       dr["ccount_print"] = lri[i].count_print; 
       dr["csum_tariff"] = lri[i].sum_tariff; 
       dr["clot_org"] = lri[i].lot_org; 
       dt.Rows.Add(dr); 
      } 
      return dt; 
     } 
    } 
} 

回答

2

提供你需要的數據集提供給你的報告。喜歡的東西:

viewer.LocalReport.DataSources.Add(new ReportDataSource("dataset1", dataTable)); 

編輯:基於您的評論

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    var dataTable = report_insurance(fromDate, toDate); 

    viewer_insurance.LocalReport.ReportPath = "E:\\desktop\\Doctor\\Project\\Doctor\\Doctor\\rinsurance.rdlc"; 
    viewer_insurance.LocalReport.DataSources.Add(new ReportDataSource("dataset1", dataTable); 
    viewer_insurance.RefreshReport(); 
} 

你真的不能各地要打電話給你的數據檢索方法,並通過報告發送的數據得到。

+0

我寫這篇文章的代碼: 私人無效Window_Loaded(對象發件人,RoutedEventArgs E) { viewer_insurance.LocalReport.ReportPath =「E:\\ \\桌面\\博士項目\\ \\醫生醫生\\ rinsurance。 RDLC「; this.viewer_insurance.RefreshReport(); } –

+0

此錯誤:在本地報告處理期間發生錯誤 –

+0

然後,這是一個完全獨立的事情,你將不得不解決。 – GalacticCowboy