2012-02-14 77 views
0

我得到以下異常而應對=以同樣的數據網格視圖控制行 System.InvalidOperationException了未處理 消息「已經提供行屬於一個DataGridView控制」。 以下是複製方法複製選定行中currentRowCollection作爲DataGridViewSelectedRowCollection例外:已提供行屬於一個DataGridView控制

copy() 
    { 
      If (DataGridViewWorkGroupDetails.Rows.Count = 1) Then 
       Exit Sub 
      End If 
      Try 
       pasteMode = "copy" 
       currentRowCollection = DataGridViewWorkGroupDetails.SelectedRows 
      Catch ex As Exception 
       MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "frmworkgroup:copyRowCollectionError") 
      End Try 
     } 

而且在粘貼法

paste() 
{ 
    Dim row As DataGridViewRow 
    Dim myRow As DataGridViewRow 
     For Each row In currentRowCollection 
      myRow = row 
      myRow.Cells.Item(1).Value = String.Empty 
      DataGridViewWorkGroupDetails.Rows.Insert(DataGridViewWorkGroupDetails.Rows.Count - 1, myRow) 
     Next 

} 

期間粘貼的方法,我想保持1列爲空字符串粘貼。 當我從一個datagridview複製行到另一個它的作品,但是當我複製到相同的datagridview然後它添加異常。 提供的行已屬於DataGridView控件

回答

0

問題是您正在使用對數據行的引用。

For Each row In currentRowCollection 

實際上是對dataview中已經存在的行的引用。

在調用插入之前,您需要對該行中的數據執行深層複製。

myRow = DataGridViewWorkGroupDetails.NewRow(); 
myRow.ItemArray = row.ItemArray; 
DataGridViewWorkGroupDetails.Rows.Add(myRow); 

我還沒有測試此代碼,但它應該工作

+0

請您給我爲 – 2012-02-14 06:36:44

+0

它不是在vb.net ..There工作的一個示例代碼是沒有NEWROW()方法在上面的行中使用的datagridview爲 myRow = DataGridViewWorkGroupDetails.NewRow(); – 2012-02-14 07:36:12

相關問題