2012-08-02 46 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