0

我正在处理一个新项目,但我不知道我在哪里搞砸了。我希望有几双新的眼睛能够帮助我并引导我朝着正确的方向前进。

我的 Windows 窗体有一个 datagridview 和一个按钮,该按钮用于保存用户选择的选定行并将它们保存到数据库中。我现在不关心储蓄我想知道我在哪里做错了dataGridView.Selected.Rows?我已将 datagridview 的 SelectionMode 属性更改为“全行选择”。当它到达 foreach 循环时,选定的行被分解并保存到指定的对象,然后整个对象被保存到表/数据库中。当它开始保存它时,它似乎有来自datagridview的所有行,而不仅仅是用户选择的......

提前致谢

   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);
4

1 回答 1

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();
于 2012-08-02T18:28:02.107 回答