2017-02-21 3 views
1

Я следовал учебник нашел hereReportViewer с BusinessObject источником данных показывает пустой стол

Единственное отличие состоит в том, что я проектирования приложения в Windows Forms.

Я смог увидеть источник данных Merchant, и я разработал отчет так, как мне это нравится. Я также убедился, что Form1.frm имеет ReportViewer, у которого есть отчет, указывающий на отчет, который я разработал.

Когда я запускаю программу, средство просмотра отчетов показывает мне разработанный отчет (я могу видеть имена столбцов), но строк нет.

Несмотря на то, что я создал код шаблона Product в объекте Merchant, как описано в учебнике, не было отображено ни одного 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; 
    } 
} 

Все, что мне нужно сделать во время выполнения был изменить DataSource в databindingsource, и что необходимо сделать трюк:

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(); 
} 
Смежные вопросы