我可以在不使用DataSource属性的情况下在DataGridView中添加DataTable吗
本文关键字:DataGridView 添加 DataTable 情况下 属性 DataSource 我可以 | 更新日期: 2023-09-27 18:28:33
这是一个将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);
}
}
}
您正试图将DataRow添加到DataGridView,而不是添加DataGridViewRow
看看visualstudio的intellisence告诉你关于DataGridView.Rows.Add()方法的内容。其中有4个:
-
Add()-将空行添加到DataGridView
-
Add(DataGridViewRow)-添加新行(这是您需要的)
-
Add(count)-将空行的[count]添加到DataGridView
-
Add(object[])添加新行并用值填充(您也可以使用此)
您当前正在使用最后一个:Add(object[])。编译器并没有抱怨,因为它将您传递给它的DataGridViewRow视为一个只有一个对象的对象数组。显然不是您想要的。
以下是相关问题:https://stackoverflow.com/a/9094325/891715
通过在DataGridView中添加行之前添加以下行,我的问题得到了解决。
object[] _items = _row.ItemArray;