在表单上的表中显示数据

时间:2015-02-23 08:45:06

标签: c# forms datatable

我想在我的表单上创建一个显示一些信息的表。目前,我遇到了一个问题

我的表格方法:

        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个标题?我尝试添加额外的一个,但这似乎没有帮助,也许我忽视了一些愚蠢的事情?

2 个答案:

答案 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);
}