我使用WPF生成Crystal Report查看器,并且我能够在报表查看器中加载数据。但是当我尝试创建一个动态刷新报表的事件时,无法刷新数据。
基本上我所做的是创建一个连接MSSQL服务器
的数据集然后生成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(对象发送者,RoutedEventArgs e)功能)时,没有数据已更新。 所以有人可以帮我这个吗? 非常感谢你。
答案 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>文件>取消选中“使用报告保存数据”。
然后再保存......它会起作用。