DataTable 拒绝填充行

Jes*_*e A 1 .net c# datatable

我似乎无法让我的 System.Data.DataTable 接受任何新行。下面是正在使用的代码。

using System.Data;
using System.Windows.Forms;

namespace DataTableToDGVTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("id", typeof(int));
            dataTable.Columns.Add("name", typeof(string));

            DataRow dataRow = dataTable.NewRow(); 
            dataRow["id"] = "1";
            dataRow["name"] = "Jesse";
            dataTable.Rows.Add(dataRow);

            //Tried this as well, still doesn't work
            //dataTable.Rows.Add(1, "Jesse");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在调试时,我注意到DataTable.Rows.Count会从0增加到1,但是DataTable.Rows.List仍然为空,如下图所示列表仍为空

我已在 .NET Framework 4.6 中运行此代码,并在 4.7.1 中进行了尝试,结果都是相同的。

gil*_*uck 5

您正在检查物体的错误部分。您应该检查的是dataTable => rows => Results View => [0] => ItemArray. 请参阅下面的代码(更多扩展版本)以更好地演示。

static void Main(string[] args)
        {
            var dataTable = new DataTable();
            dataTable.Columns.Add("id", typeof(int));
            dataTable.Columns.Add("name", typeof(string));

            var rowCount = dataTable.Rows.Count;
            Console.WriteLine(rowCount);

            var dataRow = dataTable.NewRow();
            dataRow["id"] = "1";
            dataRow["name"] = "Jesse";
            dataTable.Rows.Add(dataRow);

            var rowCountAfterAdding = dataTable.Rows.Count;
            Console.WriteLine(rowCountAfterAdding);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var ia in row.ItemArray)
                {
                    Console.WriteLine(ia);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)