Crystal报表无法刷新数据

时间:2012-07-26 19:53:01

标签: c# crystal-reports

我使用WPF生成Crystal Report查看器,并且我能够在报表查看器中加载数据。但是当我尝试创建一个动态刷新报表的事件时,无法刷新数据。

基本上我所做的是创建一个连接MSSQL服务器enter image description here

的数据集

然后生成Crystal Report文件:enter image description here

然后尝试将数据导入MainWindow中的Crystal报表查看器。 这是代码:

public partial class MainWindow: Window
{
   DataSet1TableAdapters.BordierSheetTableAdapter TA = new      DataSet1TableAdapters.BordierSheetTableAdapter();
     ReportDocument reportDoc = new ReportDocument();
  public MainWindow()
    {
        InitializeComponent();
        Data_Binding();
    }
  public void button2_Click(object sender, RoutedEventArgs e) 
    {
       reportDoc.Refresh();
       crystalReportsViewer1.ViewerCore.RefreshReport();
    }
  void Data_Binding()
     {

         DataSet empDataSet = new DataSet();

         using (SqlConnection conn = new SqlConnection())
         {
             conn.ConnectionString = "Data Source=YATONGHOU\\SQLEXPRESS;Initial Catalog=messagedb;Integrated Security=True";
             conn.Open();


             string sqlStr = "select * from BordierSheet";
             SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlStr,conn);

             dataAdapter.Fill(empDataSet, "BordierSheet");
         }

         string reportDataSource = @"C:\\Users\\yatong\\Work\\LogAnalytics\\BordierSheetReport\\BordierSheetReport\\CrystalReport1.rpt";

         reportDoc.Load(reportDataSource);
         reportDoc.SetDataSource(empDataSet);

         this.crystalReportsViewer1.ViewerCore.ReportSource = reportDoc;

     }
}

当我更新我的数据库然后单击窗口中的按钮(触发button2_Click(对象发送者,RoutedEventArgs e)功能)时,没有数据已更新。 所以有人可以帮我这个吗? 非常感谢你。

4 个答案:

答案 0 :(得分:3)

试试这个:

reportDoc.Load(reportDataSource);
reportDoc.SetDataSource(empDataSet);
this.crystalReportsViewer1.ViewerCore.ReportSource = reportDoc;
crystalReportsViewer1.RefreshReport();

答案 1 :(得分:1)

你有没有尝试过:

reportDoc.Refresh() 

进行数据加载后?

答案 2 :(得分:0)

删除数据源并重新添加,例如:

    if ( reportViewer1.LocalReport.DataSources.Count > 0)
        reportViewer1.LocalReport.DataSources.RemoveAt(0);

  reportViewer1.LocalReport.DataSources.Add(new ReportDataSource()
{
            Name = "ds",
            Value = MyDataSource
   });

答案 3 :(得分:0)

试试这个..这个有效!

转到Crystal Report Design>文件>取消选中“使用报告保存数据”。

然后再保存......它会起作用。