0

次のコードでは、選択した行が新しい行である場合に、選択した行をデータグリッドビューのデータソースに追加しようとしていますが、行の最初の列に「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());

        }
4

1 に答える 1

0

上記のダンが述べたように、Datatable はグリッドに結合されているため、新しい行を追加したり、その新しい行のテキストを変更したりするたびに、新しい行と更新された値が _dt に自動的に更新されます。

SelectedRows はオブジェクト 'DataGridViewSelectedRowCollection' のコレクションであるため、'dataGridView1.SelectedRows[0]' を _dt.Rows に追加しないでください。 「_dt.Rows.Add(params Object[] values)」の別のオーバーロードされた関数を使用できます

于 2012-09-07T09:31:31.997 に答える