2017-02-21 51 views
1

我也跟着教程中here的ReportViewer與BusinessObject的數據源顯示一個空表

唯一的區別是,我設計一個Windows窗體應用程序。

我能夠看到商家數據源,並按照我喜歡的方式設計了報告。我還確保Form1.frm有一個ReportViewer,它的報告指向我設計的報告。

當我運行該程序時,報告查看器顯示設計報告(我可以看到列名稱),但沒有行。

儘管我確保在Merchant對象中創建一些模板Product實例,如教程中所述,但未顯示單個Product。 我重新設計了報告,以便它不會對任何事物進行分組/總計/計數,只是按照原樣列出所有Products,但仍然只能獲取列名稱和現在的數據行。

我想,也許我需要在運行時實例化一個新的Merchant對象,並將它傳遞給ReportViewer.LocalReport,但我發現沒有辦法做到這一點。

我在做什麼錯?

+0

請檢查您的標籤...它是c#,asp或vb。然後提供更有用的示例,例如報告的代碼和報告的設計器屏幕截圖。 – Jaxedin

+0

@Jaxedin謝謝。我修正了這一點。還回答了我自己的問題。 – Ahmad

回答

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; 
    } 
} 

所有我需要在運行時做數據集來改變databindingsource的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(); 
} 
相關問題