Создать 3-х уровневую мастер-сетку

Я пытаюсь создать gridview с 3-х уровневым Master Detail View.

Мой взгляд должен содержать:

  • Счета-фактуры
  • InvoiceLines
  • InvoiceLineDetails

Я использую следующий код:

public partial class Manage_Other_Company_Invoices : DevExpress.XtraBars.Ribbon.RibbonForm
{
    private int companyID;
    DataAccess_CompanyInvoice dal = new DataAccess_CompanyInvoice();
    DataSet dataSet; 

    public Manage_Other_Company_Invoices(int companyID)
    {
        this.companyID = companyID;
        DisplayData();
    }

    private DataSet GetItems()
    {
        dataSet = new DataSet();
        dataSet.Clear();
        dataSet.Tables.Add(dal.CreateInvoiceTable(companyID));
        dataSet.Tables.Add(dal.CreateInvoiceLinesTable());
        dataSet.Tables.Add(dal.CreateInvoiceLineDetailsTable());

        DataColumn keyColumn1 = dataSet.Tables["Invoice"].Columns["invoiceID"];
        DataColumn foreignKeyColumn1 = dataSet.Tables["InvoiceLines"].Columns["invoiceID"];
        dataSet.Relations.Add("Invoice", keyColumn1, foreignKeyColumn1, false);

        DataColumn keyColumn2 = dataSet.Tables["InvoiceLines"].Columns["company_Invoice_Line_ID"];
        DataColumn foreignKeyColumn2 = dataSet.Tables["InvoiceLineDetails"].Columns["InvoiceLineID"];
        dataSet.Relations.Add("InvoiceLineInvoiceLineDetails", keyColumn2, foreignKeyColumn2,false);

        return dataSet;
    }

    private void DisplayData()
    {
        //MessageBox.Show("test" + GetItems().Tables["Invoice"].Rows.Count.ToString());
        gridControl.DataSource = GetItems().Tables["Invoice"];
        gridControl.ForceInitialize();
    }
}

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

Что я делаю неправильно?

0 ответов

Другие вопросы по тегам