【问题标题】:Crystal report unable to refresh data水晶报表无法刷新数据
【发布时间】:2012-07-26 19:53:00
【问题描述】:

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

基本上我所做的是创建一个与 MSSQL Server连接的数据集

然后生成水晶报表文件:

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

【问题讨论】:

  • 刷新报表的代码在哪里?什么不起作用?
  • 在函数button2_Click(object sender, RoutedEventArgs e)中。并且 Refresh 方法不起作用。
  • 它是抛出错误还是根本不刷新?您是否尝试过在刷新报告之前调用 Data_Binding?
  • 它有“System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。”调试时。而且我认为 Data_Binding 确实在刷新之前执行(当 MainWindow 初始化时)。

标签: c# crystal-reports


【解决方案1】:

试试这个:

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

【讨论】:

  • 欢迎来到 Stack Overflow!你能否请edit你的答案解释为什么这段代码回答了这个问题?纯代码答案是 discouraged,因为它们不教授解决方案。
  • 谢谢,你拯救了我的一天!
【解决方案2】:

你有没有尝试过:

reportDoc.Refresh() 

在加载数据之后?

【讨论】:

  • 这不是和我在button2_Click函数中做的一样吗?
  • 我会在数据绑定操作结束时这样做。 CR 就是这么挑剔。
【解决方案3】:

试试这个..这行得通!

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

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

【讨论】:

    【解决方案4】:

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

        if ( reportViewer1.LocalReport.DataSources.Count > 0)
            reportViewer1.LocalReport.DataSources.RemoveAt(0);
    
      reportViewer1.LocalReport.DataSources.Add(new ReportDataSource()
    {
                Name = "ds",
                Value = MyDataSource
       });
    

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多