我已按照找到的here
教程进行操作唯一的区别是我正在设计Windows窗体应用程序。
我能够看到Merchant数据源,并按照我喜欢的方式设计了报告。我还确保Form1.frm有一个ReportViewer,它的报告指向我设计的报告。
当我运行程序时,报表查看器会向我显示设计的报表(我可以看到列名称),但没有行。
尽管如此,我确保在Product
对象中创建了一些模板Merchant
实例,如教程中所述,并未显示单个Product
。
我重新设计了报告,以便它不会对任何内容进行分组/求和/计算,只是按原样列出所有Products
,但是,我仍然只获取列名,现在是数据行。
我想,也许我需要在运行时实例化一个新的Merchant
对象并将其传递给ReportViewer.LocalReport
,但我发现无法做到这一点。
我做错了什么?
答案 0 :(得分:0)
我发现了我需要做的事情,以便我在报告中填充数据表。
我使用Product
类来构建用于设计报告的数据集
// the following code is copied from the tutorial pointed at my question.
// I just reduced it to the basics to make the answer short and simple
public class Product {
private string m_name;
private int m_price;
public Product(string name, int price) {
m_name = name;
m_price = price;
}
}
public class Merchant {
private List<Product> m_products;
public Merchant() {
m_products = new List<Product>;
m_products.Add(new Product("Pen",25));
m_products.Add(new Product("Pencil",30));
m_products.Add(new Product("Notebook",15));
}
public List<Product> getProducts() {
return m_products;
}
}
我在运行时需要做的就是更改数据绑定源的DataSource
,这应该可以解决问题:
private void Form1_Load(object sender, EventArgs e) {
Merchant merchant = new Merchant(); // Instantiate a new instance of Merchant
// by now merchant already has a List of 3 Products
//Call getProducts() to fetch a List of 3 Products and pass it
// to the binding datasource used to design the report
this.ProductBindingSource.DataSource = merchant.getProducts();
//added by default (by the wizard)
this.reportViewer1.RefreshReport();
}