微软的ReportViewer过去的项目使用它来实现多张票据打印,查看发现:
RefreshReport函数MSDN中的备注
调用 RefreshReport 方法会导致重新加载和呈现报表中的所有数据
以前没有注意到他的实际效果。假如我想更改数据里面的值需要重新
...
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add());
...
现在经过测试确认不需要:
执行RefreshReport的时候Report重新读取数据源。只需更改原先数据源的数据即可。
例如:
...
private List<Product> m_products = new List<Product>();
private void Form1_Load(object sender, EventArgs e)
{
m_products.Add(new Product("Pen", 25));
m_products.Add(new Product("Pencil", 30));
m_products.Add(new Product("Notebook", 15));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Product", m_products));
this.reportViewer1.RefreshReport();
}
private void button1_Click(object sender, EventArgs e)
{
Product model = m_products[1];
model.Price = 34222;
this.reportViewer1.RefreshReport(); //执行后报表的数据就改变了。
}
...