我有一个预定义的 DataGridView,我需要在没有数据绑定的情况下从 DataTable 添加行。我正在尝试以DataGridView.Rows.Add()
编程方式使用该方法,但是我不知道 DataTable 的列名。DataTable 中的列与 DataGridView 的顺序相同,但是如何在不知道列名的情况下将它们添加到 DataGridView?
问问题
37418 次
3 回答
14
假设您的 DataGridView 存在但没有列。你可以这样做:
foreach (DataColumn dc in yourDataTable.Columns) {
yourDataGridView.Columns.Add(new DataGridViewTextBoxColumn());
}
然后添加行数据:
foreach(DataRow dr in yourDataTable.Rows) {
yourDataGridView.Rows.Add(dr.ItemArray);
}
现在,如果默认文本框列不够用,您可能必须使用不同的单元格模板创建列。
于 2012-12-10T22:24:48.517 回答
2
如果您的 DataGridView 没有行和列,那么只需
yourDataGridView.DataSource = yourDataTable
会做所有的工作。
如果您的 DataGridView 已经绑定到某个数据源(如果您使用 DataTable,那么我假设 DataSource 是 DataTable),
那么您需要编辑 yourDataTable -> 从旧 DataTable 添加旧行(如果旧 DataTable 不再可访问,则从 DataGridView 添加旧行)
foreach(DataRow dr in oldDataTable.Rows)
{
yourDataTable.Rows.Add(dr);
}
yourDataGridView.DataSource = yourDataTable;
或编辑 oldDataTable -> 从 yourDataTable 添加新行,例如:
DataTable dtOld = (DataTable)yourDataGridView.DataSource;
foreach(DataRow yourdr in yourDataTable.Rows)
{
dtOld.Rows.Add(yourdr);
}
yourDataGridView.DataSource = dtOld;
于 2012-12-10T23:10:14.837 回答
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;
于 2012-12-10T23:12:56.943 回答