在表单上以 table 显示数据

Displaying data in a table on a form

我想在我的表单上制作一个 table 来显示一些信息。目前,我遇到了一个问题

我的table方法:

        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;
    }

我的错误是:

Input array is longer than the number of columns in this table.

据我所知,我输入了正确的列值。我有 5 个属性和 5 headers?我尝试添加一个额外的,但这似乎没有帮助,也许我忽略了一些愚蠢的事情?

您在添加所有列之前放置了一整行。 先添加列,再添加行:

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

看起来您每次填充单个列时都在尝试填充行。如果我没记错的话,您需要在开始填充行之前定义列。

尝试移动此代码段:

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]);
        }