获取选定的Datagridview(行)到数据库

时间:2012-08-02 17:18:12

标签: c# winforms

我正在处理一个新项目,我不知道我在哪里弄乱。我希望一些新的眼睛可以帮助我并引导我朝着正确的方向前进。

我的Windows窗体有一个数据网格视图和一个按钮,该按钮用于保存用户选择的选定行并将其保存到数据库。我现在不关心拯救我想知道我在dataGridView.Selected.Rows做错了什么?我已将datagridview的SelectionMode属性更改为"完整行选择"。当它到达foreach循环时,所选的行被分解并保存到指定的对象,然后整个对象被保存到tabel /数据库。当它保存它时,似乎数据网格视图中的所有行不仅仅是用户选择的行......

提前致谢

   foreach (DataGridViewRow dr in dataGridView1.SelectedRows)
        {

            int i = 0;
            i = dataGridView1.SelectedRows[0].Index;

            log slog = new log();

            slog.Date = dataGridView1[0, i].Value.ToString();
            slog.Level = dataGridView1[1, i].Value.ToString();
            slog.Project = dataGridView1[2, i].Value.ToString();
            slog.Number = dataGridView1[3, i].Value.ToString();
            slog.Method = dataGridView1[4, i].Value.ToString();
            slog.Property = dataGridView1[5, i].Value.ToString();

            logEntity.logs.AddObject(slog);

        }
   logEntity.SaveChanges();
}

-

//other code tried
//for (int i = 0; i <= dataGridView1.SelectedRows.Count - 1; i++)
//var rowIndexes = dataGridView1.SelectedCells.Cast<DataGridViewCell>()
//          .Select(cell => cell.RowIndex)
//          .Distinct();
//dataGridView1.SelectedRows.Select(r => r.Index);

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于索引。如果i我已经拥有你想要的那一行,我会摆脱它。

foreach (DataGridViewRow dr in dataGridView1.SelectedRows)
        {
         log slog = new log();

         slog.Date = dr.cells(0).Value.ToString();
         slog.Level = dr.cells(1).Value.ToString();
         slog.Project = dr.cells(2).Value.ToString();
         slog.Number = dr.cells(3).Value.ToString();
         slog.Method = dr.cells(4).Value.ToString();
         slog.Property = dr.cells(5).Value.ToString();

         logEntity.logs.AddObject(slog);

        }
logEntity.SaveChanges();