以下是将DataTable复制到DataGridView中的方法,该方法无法正常工作,此方法只能在DataGridView中添加列和 空 行。没有使用DataGridView的DataSource属性,任何人都可以建议我解决这个问题吗?
public void CopyDataTableInDataGridView(DataTable table, DataGridView gdv)
{
if (gdv.Rows.Count > 0)
gdv.Rows.Clear();
if (table != null && table.Rows.Count > 0)
{
foreach (DataColumn _colm in table.Columns)
{
DataGridViewColumn _col;
if (_colm.GetType() == typeof(bool))
_col = new DataGridViewCheckBoxColumn();
else
_col = new DataGridViewTextBoxColumn();
_col.Name = _colm.ColumnName;
_col.HeaderText = string.Concat(_colm.ColumnName.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');
gdv.Columns.Add(_col);
}
foreach (DataRow _row in table.Select())
{
//Rows getting added in dgv but not data
// By adding following line in Code my problem get solved
//object[] _items = _row.ItemArray;
gdv.Rows.Add(_row);
}
}
}
答案 0 :(得分:0)
您正在尝试将DataRow添加到DataGridView,而不是添加DataGridViewRow
看看visualstudio的智能告诉你有关DataGridView.Rows.Add()方法的内容。其中有4个:
Add() - 向DataGridView
添加(DataGridViewRow) - 添加新行(这是您需要的)
添加(计数) - 将空行的[count]添加到DataGridView
添加(object [])添加新行并用值填充它(您也可以使用它)
您目前正在使用最后一个:Add(object [])。编译器不会抱怨,因为它将DataGridViewRow视为一个只包含一个对象的对象数组。显然不是你想要的。
答案 1 :(得分:0)
通过在DataGridView中添加行之前添加以下行,我的问题得到解决。
object[] _items = _row.ItemArray;