Создать 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()
Функция показывает правильное количество строк в этой таблице. Но странная вещь в том, что строка после выдает исключение нулевой ссылки.
Что я делаю неправильно?