C# 我可以在DataGridView中添加DataTable而不使用DataSource属性吗

C# 我可以在DataGridView中添加DataTable而不使用DataSource属性吗,c#,datagridview,datatable,C#,Datagridview,Datatable,下面是一种将DataTable复制到DataGridView的方法,该方法不起作用,该方法只能在DataGridView中添加列和空的行。有谁能在不使用DataGridView的DataSource属性的情况下为我推荐解决方案吗 public void CopyDataTableInDataGridView(DataTable table, DataGridView gdv) { if (gdv.Rows.Count > 0) gdv

下面是一种将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的智能告诉您的DataGridView.Rows.Add()方法。其中有4项:

  • Add()-将空行添加到DataGridView

  • 添加(DataGridViewRow)-添加新行(这是您需要的)

  • Add(count)-将空行的[count]添加到DataGridView

  • Add(object[])添加新行并用值填充它(您也可以使用此选项)

您当前正在使用最后一个:添加(对象[])。编译器不会抱怨,因为它将您传递给它的DataGridViewRow视为一个对象数组,其中只有一个对象。显然不是你想要的


下面是相关问题:

在DataGridView中添加行之前添加以下行,我的问题得到解决

   object[] _items = _row.ItemArray;

为什么不想使用
DataSource
属性?@gunr217,因为我想在DataGridView上执行大量操作,但DataSource限制了我这么做。我不太清楚为什么不想使用
DataSource
属性。当前,您正在将每一行的
添加到字符串
实现中,而应该为该行的每一列添加一个数据数组。您可以通过查看在栅格视图中添加行的位置code@AnkushMadankar,我不明白
DataSource
将如何限制您。请记住,您可以传入自定义的
,而不仅仅是
数据表
,作为数据。您可以先格式化类中的数据,然后插入类。