C# 将所选datagridview发送到datatable

C# 将所选datagridview发送到datatable,c#,datagridview,datatable,C#,Datagridview,Datatable,我正在尝试将选定的datagridview行获取到datatable for (int i = 0; i < dataGridview.SelectedRows.Count; i++) { DT1.Rows.Add(); for (int j = 0; j < dataGridview.Columns.Count; j++) { DT1.Rows[0][j] =

我正在尝试将选定的datagridview行获取到datatable

for (int i = 0; i < dataGridview.SelectedRows.Count; i++)
        {
            DT1.Rows.Add();

            for (int j = 0; j < dataGridview.Columns.Count; j++)
            {
                DT1.Rows[0][j] = dataGridview.SelectedRows[i].Cells[j].Value;
            }
        }
使用下面的代码,我可以发送selectedrow over,但是当尝试向datatable发送第二行时,它会添加一个空行,但会覆盖datatable中的第一行

for (int i = 0; i < dataGridview.SelectedRows.Count; i++)
        {
            DT1.Rows.Add();

            for (int j = 0; j < dataGridview.Columns.Count; j++)
            {
                DT1.Rows[0][j] = dataGridview.SelectedRows[i].Cells[j].Value;
            }
        }
for(int i=0;i
正如预期的那样,它进入了索引0上的行,因此我尝试了以下操作以进入最后一行

for (int j = 0; j < dataGridview.Columns.Count; j++)
            {
                int rowcount = DT1.Rows.Count;
                DT1.Rows[rowcount][j] = dataGridview.SelectedRows[i].Cells[j].Value;
            }
for(int j=0;j
这给了我一个错误,行不存在,应该如何解决添加第二行而不是替换

DT1.Rows[i][j] = dataGridview.SelectedRows[i].Cells[j].Value,ToString();

试试这个!您的外部循环已在跟踪表中的行,因此无需干扰行计数。

您在
行计数中遇到问题。

Rowcount提供总行数,但
rowindex
始终以0开头 ie
rowindex=rowcount-1
用这个

for (int j = 0; j < dataGridview.Columns.Count; j++)
{
    int rowcount = DT1.Rows.Count;
    DT1.Rows[rowcount-1][j] = dataGridview.SelectedRows[i].Cells[j].Value;
}
for(int j=0;j
您的代码中还有其他问题。也就是说,如果用户在对该代码的不同调用中选择相同的行,则将插入重复的行


修复rowcount,将其更改为rowcount-1。然后回顾你的设计。提出一种防止重复插入的方法(除非您真的希望如此)。

数组基于0,因此不要访问行[rowcount],访问行[rowcount-1]以到达最后一行。谢谢您,Les,这非常有效,还尝试了int-rowcount=CarProfile.Rows.Count-1;但这行不通。你能发一封邮件给我,这样我就可以给你积分了吗?计数1不是行数。行数是。行数。Count-1或rowcount-1是最后一行