C# 添加datagridview';s行到数据表

C# 添加datagridview';s行到数据表,c#,C#,在下面的代码中,我尝试将datagridview的选定行添加到datagridview的数据源中,如果选定行是新行,但它只添加 “DataGridViewRow{Index=0}”到行的第一列,行的其余部分为空 if (dataGridView1.SelectedRows[0].IsNewRow) { _dt.Rows.Add(dataGridView1.SelectedRows[0]); dataGridView1.Dat

在下面的代码中,我尝试将datagridview的选定行添加到datagridview的数据源中,如果选定行是新行,但它只添加 “DataGridViewRow{Index=0}”到行的第一列,行的其余部分为空

    if (dataGridView1.SelectedRows[0].IsNewRow)
        {
            _dt.Rows.Add(dataGridView1.SelectedRows[0]);
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = _dt;
        }

        DataTable dtUpdated = (DataTable)dataGridView1.DataSource;
        dtUpdated.GetChanges();

        SqlCommandBuilder cb = new SqlCommandBuilder(_sqlDa);

        try
        {

            _sqlDa.Update(dtUpdated);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());

        }

如上所述,Datatable与网格绑定,因此每当您添加新行或更改新行中的任何文本时,新行和更新的值都会自动更新到_dt


如果您仍然感到困惑或遇到与上述相同的问题,请不要将“dataGridView1.SelectedRows[0]”添加到_dt.Rows中,因为SelectedRows是对象“DataGridViewSelectedRowCollection”的集合,因此最好将SelectedRows转换为Datarow,或者您可以使用另一个重载函数“_dt.Rows.add(params object[]值)“

如果您已经绑定到数据表,那么当您在gridview中添加新行时,它应该为您添加到_dt中,这样我就不需要第一个If语句了。另外,.SelectedRows成员返回一个DataGridViewRow,看起来您正试图将其添加到DataTable中,而实际上您应该添加一个DataRow。