c# - 创建 3 级主从网格
问题描述
我正在尝试创建一个具有 3 级主详细信息视图的网格视图。
我的观点应该包含:
- 发票
- 发票行
- 发票行详细信息
我使用以下代码:
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()
函数中取消注释测试行时,它会显示该表中正确的行数。但奇怪的是,后面的行抛出了一个空引用异常。
我究竟做错了什么?
解决方案
推荐阅读
- azure - 天蓝色搜索无法导入数据
- sql - MSSQL Select with CASE in WHERE 条件
- c# - 由于支持字段,EF-Core 代码首先引发错误的问题
- spring-boot - Spring Validation TypeMismatch如何自定义defaultMessage
- sql - SQL Server:如何即时更改我选择的所有列的排序规则
- sails.js - 使用sails-disk 时,任何具有`unique:true` 的属性也必须具有`required:true`
- node.js - 如何在 Node JS 中获取连接到我的 PC/笔记本电脑的外部设备/显示器/屏幕的数量?
- html - 超过 1 行的角度切换按钮
- dart - Flutter Navigator.pop(context) 返回黑屏
- android - 让 WebView 在后台继续播放视频