c# - DataGridView 选中行到DataTable

标签 c# winforms datagridview datatable selection

我试图只将 DataGridView 的选定行添加到 DataTable,我使用的代码总是从第一行开始,即使未选择这一行......有人知道如何请解决这个问题?

DataTable dt = new DataTable("Rapport");

// Generating columns to datatable
foreach (DataGridViewColumn column in dataGridView1.Columns)
    dt.Columns.Add(column.Name, typeof(string));

// Adding selected rows of DGV to DataTable
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
    dt.Rows.Add();
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        dt.Rows[i][j] = dataGridView1[j, i].Value;
    }
}

最佳答案

您必须像访问 SelectedRows

dt.Rows[i][j] = dataGridView1.SelectedRows[i].Cells[j].Value;

如果您的 DataTable 与 Cell 具有相同的类型就更好了

DataTable dt = new DataTable();
 foreach (DataGridViewColumn column in dataGridView1.Columns)
    dt.Columns.Add(column.Name, column.CellType); //better to have cell type

所以你的代码是:

DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dataGridView1.Columns)
    dt.Columns.Add(column.Name, column.CellType); //better to have cell type
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
     dt.Rows.Add();
     for (int j = 0; j < dataGridView1.Columns.Count; j++)
     {
         dt.Rows[i][j] = dataGridView1.SelectedRows[i].Cells[j].Value;
                                   //^^^^^^^^^^^
     }
 }

关于c# - DataGridView 选中行到DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639641/

相关文章:

c# - 试着抓。以相同的方式处理多个异常(或失败)

c# - sql linq之间有什么区别吗

c# - 为什么我们不能从实例对象访问静态成员?

c# - 如何刷新DataGridView单元格样式

c# - 如何使用 NReco ffmpeg ConvertMedia 或仅使用 ffmpeg 命令行组合 2 个视频?

c# - 如何在 C# 中创建一个完全透明的交互式 winform?

C# 鼠标右键单击和控制焦点

c# - 数据绑定(bind)和控制

c# - DataGridViewCheckBoxColumn : FormatException on boolean-column

c# - DataGridView 自定义排序