我想在我的表单上创建一个显示一些信息的表。目前,我遇到了一个问题
我的表格方法:
private DataTable ResultTable()
{
Other.OrderDatabase orderDatabase = new OrderDatabase();
string[] names = { "Order ID", "Name of order", "Price", "Date of order", "Order description" };
DataTable table = new DataTable();
for (int i = 0; i < names.Length; i++)
{
//names of columns
table.Columns.Add(names[i]);
foreach (Order order in orderDatabase.OrdersDatabase)
{
table.Rows.Add(order.OrderId, order.NameOfOrder,order.PriceOfOrder, order.DateOfOrder, order.OrderDescription);
}
}
return table;
}
我的错误是:
输入数组比此表中的列数长。
据我了解,我输入了正确的列值。我有5个属性和5个标题?我尝试添加额外的一个,但这似乎没有帮助,也许我忽视了一些愚蠢的事情?
答案 0 :(得分:1)
每次填充单个列时,您似乎都在尝试填充行。如果我没有弄错的话,你需要在开始填充行之前定义列。
尝试移动此代码段:
foreach (Order order in orderDatabase.OrdersDatabase)
{
table.Rows.Add(order.OrderId, order.NameOfOrder,order.PriceOfOrder, order.DateOfOrder, order.OrderDescription);
}
......在这个for循环之外,直接在它下面:
for (int i = 0; i < names.Length; i++)
{
//names of columns
table.Columns.Add(names[i]);
}
答案 1 :(得分:0)
在添加所有列之前,您要整整一行。 首先添加列,然后添加行:
for (int i = 0; i < names.Length; i++)
{
//names of columns
Columns.Add(names[i]);
}
foreach (Order order in orderDatabase.OrdersDatabase)
{
table.Rows.Add(order.OrderId, order.NameOfOrder,order.PriceOfOrder, order.DateOfOrder, order.OrderDescription);
}