为什么一旦我的 foreach 循环关闭,我添加的数据表行就会从表中消失?

我正在将行和列动态添加到数据表中。行添加到我可以看到的范围内,但是只要我运行代码,就不会出现任何内容。就像在 foreach 循环完成后刷新表格一样?菜鸟问题。对不起。


        summaryTable.Columns.Add("StationName", typeof(string));

        summaryTable.Columns.Add("DepartmentCode", typeof(string));

        var row = summaryTable.NewRow();


        foreach (var item in issuesByClass)

        {

            row.SetField("StationName", item.StationName);

            row.SetField("DepartmentCode", item.DepartmentCode);


            foreach (var itemClass in item.Lookup)

            {

                if (!itemClassLookup.ContainsKey(itemClass.Key)) continue;


                var itemClassValue = itemClassLookup[itemClass.Key];

                // Ensure column hasn't been added before

                if (!summaryTable.Columns.Contains(itemClassValue))

                {

                    summaryTable.Columns.Add(itemClassValue, typeof(decimal));

                }

                row.SetField(itemClassValue, itemClass.Sum());

            }


            if (!summaryTable.Columns.Contains("GrandTotal"))

            {

                summaryTable.Columns.Add("GrandTotal", typeof(decimal));

            }

            row.SetField("GrandTotal", item.GrandTotal);

        }

        return summaryTable;

小窗口窗体应用程序示例:


public Form1()

    {

        this.InitializeComponent();

        this.Test();

    }


    public void Test()

    {

        var dt = new DataTable();

        var subs = new[] { "Sub 1", "Sub 2", "Sub 3" };

        var row = dt.NewRow();

        foreach (var sub in subs)

        {

            if (!dt.Columns.Contains("Subs"))

            {

                dt.Columns.Add("Subs");

            }

            row.SetField("Subs", sub);

        }


        dt.Columns.Add("Test");

        row.SetField("Test", 1M);


        this.dataGridView1.DataSource = dt;

    }


梦里花落0921
浏览 125回答 1
1回答

30秒到达战场

NewRow() 不添加行。您需要在循环底部通过.Rows.Add(row). 您可能还应该创建NewRow()每次迭代。    foreach (var item in issuesByClass)    {        var row = summaryTable.NewRow();        // ...        summaryTable.Rows.Add(row);    }
打开App,查看更多内容
随时随地看视频慕课网APP