将DataTable Row添加到DataGridView而不绑定

问题描述 投票:0回答:4

我有一个预定义的 DataGridView,我需要在没有数据绑定的情况下从 DataTable 添加行。我正在尝试以编程方式使用

DataGridView.Rows.Add()
方法,但是,我不知道数据表的列名称。 DataTable 中的列与 DataGridView 的顺序相同,但是如何在不知道列名称的情况下将它们添加到 DataGridView 中?

c# winforms datagridview datatable
4个回答
14
投票

假设您的 DataGridView 存在但没有列。你可以这样做:

foreach (DataColumn dc in yourDataTable.Columns) {

     yourDataGridView.Columns.Add(new DataGridViewTextBoxColumn());

}

然后添加行数据:

foreach(DataRow dr in yourDataTable.Rows) {

     yourDataGridView.Rows.Add(dr.ItemArray);

}

现在,如果默认文本框列不够,您可能必须使用不同的单元格模板创建一个列。


2
投票

您似乎想从

DataTable
获取列名,并将行从 DataTable 行添加到 DataGridView

            DataTable myDataTable = new DataTable();
            //adding Columns
            myDataTable.Columns.Add("colInt", typeof(int));
            myDataTable.Columns.Add("colDate", typeof(DateTime));
            myDataTable.Columns.Add("colString", typeof(string));

            //adding Rows
            myDataTable.Rows.Add(1, DateTime.Now, "Hello World");

            //to get columns
            foreach (DataColumn col in myDataTable.Columns)
            {
                var c = new DataGridViewTextBoxColumn() { HeaderText = col.ColumnName }; //Let say that the default column template of DataGridView is DataGridViewTextBoxColumn
                dataGridView1.Columns.Add(c);
            }

            //to get rows
            foreach (DataRow row in myDataTable.Rows)
            {
                dataGridView1.Rows.Add(row[0], row[1], row[2]);
            }

总之有捷径

dataGridView1.DataSource = myDataTable;


2
投票

如果你的 DataGridView 没有行和列,那么就

yourDataGridView.DataSource = yourDataTable

将完成所有工作。

如果您的 DataGridView 已经绑定到某个数据源(如果您使用 DataTable 那么我假设 DataSource 是 DataTable),

然后您需要编辑您的数据表 -> 从旧数据表添加旧行(如果旧数据表不再可访问,则从 DataGridView 添加旧行)

foreach(DataRow dr in oldDataTable.Rows)
{
    yourDataTable.Rows.Add(dr);
}
yourDataGridView.DataSource = yourDataTable;

或编辑旧数据表 -> 从数据表中添加新行,例如:

DataTable dtOld = (DataTable)yourDataGridView.DataSource;
foreach(DataRow yourdr in yourDataTable.Rows)
{
    dtOld.Rows.Add(yourdr);
}
yourDataGridView.DataSource = dtOld;

0
投票
DataTable dt = new DataTable();
dt = (DataTable)gridview.DataSource;
var row = dt.NewRow();
dt.Rows.Add(row);
gridview.DataSource = dt; 
© www.soinside.com 2019 - 2024. All rights reserved.