C# Datarow ItemArray不';在第一列中使用DataGridViewButtonColumn无法正常工作

C# Datarow ItemArray不';在第一列中使用DataGridViewButtonColumn无法正常工作,c#,winforms,datagridview,datatable,C#,Winforms,Datagridview,Datatable,我有一个3列的datagridview。第一个是DataGridViewButtonColumn。另外两个是从DB收集的,我使用datarow.ItemArray从datatable填充Datagridview。 由于第一列是DataGridViewButtonColumn,因此datagridview将以wring填充。第二列获取第三列的值,第三列为空。看起来第一列得到了第二个值。我试图添加null或空值,但没有帮助 DataTable dtSelect = dataView.ToTable(

我有一个3列的datagridview。第一个是DataGridViewButtonColumn。另外两个是从DB收集的,我使用datarow.ItemArray从datatable填充Datagridview。 由于第一列是DataGridViewButtonColumn,因此datagridview将以wring填充。第二列获取第三列的值,第三列为空。看起来第一列得到了第二个值。我试图添加null或空值,但没有帮助

DataTable dtSelect = dataView.ToTable(true, "item", "subItem");

        foreach (DataRow datarow in dtSelect.Rows)
        {
              DGV.Rows.Add(new object[] { null, datarow.ItemArray });
        }
现在最糟糕的是之前的第二列get as value:System.Object[]


如何使用项数组填充第一列中有DatGridViewButtonColumn的Datagridview?

我将直接使用DataTable设置Datagridview.DataSource属性,然后在运行时创建DataGridViewButtonColumn。可以在所需位置插入此列

DataTable dtSelect = dataView.ToTable(true, "item", "subItem");
DGV.AutoGenerateColumns = true;
DGV.DataSource = dtSelect;

// Create the column and insert it as the first column
DataGridViewButtonColumn cl = new DataGridViewButtonColumn();
cl.HeaderText = "Button column";
DGV.Columns.Insert(0, cl);

// Add the CellFormatting event to be able to change the button text
DGV.CellFormatting += DGV_CellFormatting;
.....


void DGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0)
       e.Value = "Click Me";
}

我建议你认真考虑这个问题。但如果你坚持,这是你最初问题的答案。您需要分配适当的
对象[]
,将
项数组
复制到其中(使用适当的偏移量),并将该数组传递给
添加
方法,如下所示

var values = new object[DGV.Columns.Count];
foreach (DataRow datarow in dtSelect.Rows)
{
    datarow.ItemArray.CopyTo(values, 1);
    DGV.Rows.Add(values);
}