我使用WPF生成了Crystal Report查看器,并且能够在报表查看器中加载数据。但是,当我尝试创建一个事件以动态刷新报表时,无法刷新数据。
基本上,我所做的是创建与MSSQL Server连接的dataSet
然后生成一个Crystal Report文件:
然后尝试将数据导入到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)函数)时,没有任何数据已更新。
那么有人可以帮我吗?
非常感谢你。
最佳答案
尝试这个:
reportDoc.Load(reportDataSource);
reportDoc.SetDataSource(empDataSet);
this.crystalReportsViewer1.ViewerCore.ReportSource = reportDoc;
crystalReportsViewer1.RefreshReport();