1

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

基本上我所做的是创建一个与 MSSQL Server 连接的数据集在此处输入图像描述

然后生成一个水晶报表文件:在此处输入图像描述

然后尝试将数据导入 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(object sender, RoutedEventArgs e) 函数)时,没有更新任何数据。那么有人可以帮我解决这个问题吗?非常感谢。

4

4 回答 4

3

尝试这个:

reportDoc.Load(reportDataSource);
reportDoc.SetDataSource(empDataSet);
this.crystalReportsViewer1.ViewerCore.ReportSource = reportDoc;
crystalReportsViewer1.RefreshReport();
于 2015-04-11T06:08:14.620 回答
2

Have you tried doing :

reportDoc.Refresh() 

after doing the data load?

于 2012-07-26T20:11:34.317 回答
2

试试这个..这是工作!

转到 Crystal Report Design > File > 取消选中 Save Data with Report。

就是这样,然后再次保存..它将起作用。

于 2015-05-22T04:36:50.223 回答
0

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

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

  reportViewer1.LocalReport.DataSources.Add(new ReportDataSource()
{
            Name = "ds",
            Value = MyDataSource
   });
于 2015-05-21T14:38:43.043 回答