2015-07-10 74 views
0

我有一個datagridview,我想複製到用戶選擇到相同的位置(上面)的確切行。我現在擁有它,因此它將行插入到當前選中的行上方,但不會複製所有值。 我只是使用基本網格,沒有數據集或數據表。繼承我的代碼。DataGridView複製選定的行問題

 If dgvPcPrevMonth.SelectedRows.Count > 0 Then 
     dgvPcPrevMonth.Rows.Insert(dgvPcPrevMonth.CurrentCell.RowIndex, dgvPcPrevMonth.SelectedRows(0).Clone) 
    Else 
     MessageBox.Show("Select a row before you copy") 
    End If 

回答

2

克隆方法只克隆行,而不克隆行中的數據。你必須通過列循環和自己插入後添加值它

Public Function CloneWithValues(ByVal row As DataGridViewRow) _ 
    As DataGridViewRow 

    CloneWithValues = CType(row.Clone(), DataGridViewRow) 
    For index As Int32 = 0 To row.Cells.Count - 1 
     CloneWithValues.Cells(index).Value = row.Cells(index).Value 
    Next 

End Function 

的代碼是直接從下面

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.clone(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

+0

令人驚訝!我從未想象克隆方法沒有複製細胞內容:( – Graffito

+0

克隆這個詞確實意味着一個確切的副本,但如果你考慮它,如果你克隆一個人,那麼只有身體將是一個確切的副本,包含在這個人內部的數據將不得不被開發,微軟是深的:) – ThatGuy

+0

哇......多數民衆贊成在愚蠢的...和亞它的工作..只是你會認爲克隆克隆整個事情... – Sirus

0

我更新了您的代碼,以測試當前行是不是第一個並克隆cuurent行(不是第一個)。

If ddgvPcPrevMonth.CurrentCell.RowIndex > 0 Then 
    dgvPcPrevMonth.Rows.Insert(dgvPcPrevMonth.CurrentCell.RowIndex, dgvPcPrevMonth.Rows(dgvPcPrevMonth.CurrentCell.RowIndex-1).Clone) 
Else 
    MessageBox.Show("Select a row (but not the first one) before you copy") 
End If 
+0

沒有工作,指數走出提供的MSDN鏈接取範圍現在 – Sirus

+0

右:我錯過了「SelectedRows」。我更新我的代碼,將其替換爲「行」。 – Graffito

+0

會發生什麼是..我有這之前..是行復制..在第一列我有這DataGridViewRow {索引= -1}。和所有其他列是空白..仍然無法正常工作。 – Sirus