我正在構建需要動態表的ASP.NET應用程序。這是我已經發布的另一個問題(並得到了相當不錯的迴應!)。現在,我遇到了另一個問題 - 我想添加新行到我的表中,但考慮到我將在一個頁面上有10-12個表格,每個表格都包含行中的不同對象(文本框,複選框等)。 )我需要一種簡單的方式來一般添加一個與表中第一行具有相同對象的新行。這裏是我的代碼:如何在VB.NET中複製對象類型?
Private Sub AddTableRow(ByRef originalTable As System.Web.UI.WebControls.Table)
Dim originalRow As System.Web.UI.WebControls.TableRow = originalTable.Rows(1)
Dim insertingRow As New System.Web.UI.WebControls.TableRow
Dim insertingCells(originalRow.Cells.Count) As System.Web.UI.WebControls.TableCell
Dim index As Integer = 0
For Each cell As System.Web.UI.WebControls.TableCell In originalRow.Cells
insertingCells(index) = New System.Web.UI.WebControls.TableCell
insertingCells(index).Controls.Add(cell.Controls.Item(0))
index += 1
Next
insertingRow.Cells.AddRange(insertingCells)
originalTable.Rows.Add(insertingRow)
End Sub
但我發現了在倒數第二行一個空引用異常,
insertingRow.Cells.AddRange(insertingCells)
,我還可以」弄清楚爲什麼。是否因爲每個單元格的內容沒有使用新對象進行初始化?如果是這樣,我將如何解決這個問題?
謝謝!
編輯:
我的for循環,現在看起來是這樣的內部 -
For Each cell As System.Web.UI.WebControls.TableCell In originalRow.Cells
Dim addedContent As New Object
Dim underlyingType As Type = cell.Controls.Item(0).GetType
addedContent = Convert.ChangeType(cell.Controls.Item(0), underlyingType)
insertingCells(index) = New System.Web.UI.WebControls.TableCell
insertingCells(index).Controls.Add(addedContent)
index += 1
Next
步進通過與調試器,我看到這個策略是工作 - 但附加錶行仍然沒有按」 t出現...並且當我靜態地做這件事時仍然會這樣。
這解決了運行時錯誤的問題,但顯然對象仍然沒有被複制 - 沒有新的行被添加到我的餐桌。我註釋掉了那些代碼並插入了一個表格行的靜態添加,然後一個新行添加到了我的表格中。 這裏有些東西仍然不對。感謝您一直以來的幫助! =) – rybosome 2010-07-29 18:42:02