【问题标题】:Send selected datagridview to datatable将选定的 datagridview 发送到数据表
【发布时间】:2015-09-25 13:29:44
【问题描述】:

我正在尝试将选定的 datagridview 行添加到数据表中。

使用以下代码,我可以将 selectedrow 发送过来,但是当尝试将第二行发送到数据表时,它会添加一个空行,但会覆盖数据表中的第一行。

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;
            }
        }

正如预期的那样,它进入索引 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;
            }

这给了我一个错误,该行不存在,添加第二行而不是替换的解决方案应该是什么?

【问题讨论】:

  • 数组是从 0 开始的,所以不要访问 Rows[rowcount],访问 Rows[rowcount-1] 才能到达最后一行。
  • 谢谢 Les,这很好用,也试过 int rowcount = CarProfile.Rows.Count -1;但这行不通。你能把答案贴出来让我给你学分吗?
  • Count-1 不是行数。行数是 .Count。 Count-1 或 rowcount-1 是最后一行

标签: c# datagridview datatable


【解决方案1】:

您的代码中还有其他问题。也就是说,如果您的用户在对该代码的不同调用中选择了相同的行,您将插入重复项。

修复 rowcount,将其更改为 rowcount-1。然后检查您的设计。想出一种方法来防止重复插入(除非你真的想要那样)。

【讨论】:

    【解决方案2】:

    rowcount有问题

    Rowcount 为您提供总行数,但 rowindex 始终以 0 开头 即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;
    }
    

    【讨论】:

      【解决方案3】:
      DT1.Rows[i][j] = dataGridview.SelectedRows[i].Cells[j].Value,ToString();
      

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

      【讨论】:

        猜你喜欢
        • 2016-11-19
        • 1970-01-01
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多