2012-08-02 47 views
0

我正在与一个新的项目,我不知道我在哪里搞乱。我希望一些新的眼睛能够帮助我,并指引我朝着正确的方向前进。获取选定的Datagridview(行)到数据库

我的Windows窗体有一个datagridview和一个按钮,该按钮用于保存用户选择的所选行并将它们保存到数据库。我现在不关心储蓄,我想知道我在做什么错在dataGridView.Selected.Rows?我已经将datagridview的SelectionMode属性更改为“全行选择”。当它到达foreach循环时,选定的行被分解并保存到指定的对象,然后整个对象被保存到tabel /数据库中。当它到达保存它似乎拥有所有的行从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); 

回答

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(); 
+0

谢谢我确信它似乎对任何人都很简单,但在过去3天盯着这个问题后,我变得很烦恼。它应该按照选择所选的行。再次感谢! – 2012-08-02 18:43:59