在gridview上插入新行时出错
问题描述:
我正在尝试向gridview中添加新行,但由于某种原因,我在for循环中遇到了问题。在gridview上插入新行时出错
直接进入dtCurrentTable.Rows.Add(drCurrentRow),当然,有一个错误“‘行’的说法不能null.Parameter名称:排”,因为dtcurrentTable.NewRow没有执行。
这是怎么发生的?
Private Sub AddNewRowToGrid()
Dim rowIndex As Integer = 0
If Not IsNothing(ViewState("CurrentTable")) Then
Dim dtCurrentTable As DataTable = CType(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
If dtCurrentTable.Rows.Count > 0 Then
For i as Integer = 1 To i <= dtCurrentTable.Rows.Count
' Extraem-se os valores das Textbox
Dim box1 As TextBox = Dados.Rows(rowIndex).Cells(0).FindControl("Artigo")
Dim box2 As TextBox = Dados.Rows(rowIndex).Cells(1).FindControl("Descricao")
Dim box3 As TextBox = Dados.Rows(rowIndex).Cells(2).FindControl("IVA")
Dim box4 As TextBox = Dados.Rows(rowIndex).Cells(3).FindControl("PU")
Dim box5 As TextBox = Dados.Rows(rowIndex).Cells(4).FindControl("Desconto")
Dim box6 As TextBox = Dados.Rows(rowIndex).Cells(5).FindControl("UN")
Dim box7 As TextBox = Dados.Rows(rowIndex).Cells(6).FindControl("Quantidade")
Dim box8 As TextBox = Dados.Rows(rowIndex).Cells(7).FindControl("TotalLiquido")
drCurrentRow = dtCurrentTable.NewRow
dtCurrentTable.Rows(i - 1)("Artigo") = box1.Text
dtCurrentTable.Rows(i - 1)("Descricao") = box2.Text
dtCurrentTable.Rows(i - 1)("IVA") = box3.Text
dtCurrentTable.Rows(i - 1)("PU") = box4.Text
dtCurrentTable.Rows(i - 1)("Desconto") = box5.Text
dtCurrentTable.Rows(i - 1)("UN") = box6.Text
dtCurrentTable.Rows(i - 1)("Quantidade") = box7.Text
dtCurrentTable.Rows(i - 1)("TotalLiquido") = box8.Text
rowIndex += 1
Next i
dtCurrentTable.Rows.Add(drCurrentRow)
ViewState("CurrentTable") = dtCurrentTable
Dados.DataSource = dtCurrentTable
Dados.DataBind()
End If
Else
Response.Write("ViewState null")
End If
SetPreviousData()
End Sub
答
你For
循环定义错误,这就是为什么你得到一个错误:
For i as Integer = 1 To i <= dtCurrentTable.Rows.Count
评估为For i as Integer = 1 To True
(因为我总是< = Rows.Count) 其中VB翻译为For i as Integer = 1 To -1
这意味着您的循环从不运行。
它 应该
For i as Integer = 1 To dtCurrentTable.Rows.Count
此外,还有一些奇怪的关于您使用drCurrentRow = dtCurrentTable.NewRow
的方式。当你在循环中不做任何事情时,为什么会出现在循环内部?它被执行多次,然后dtCurrentTable.Rows.Add(drCurrentRow)
只被调用一次。
我很难纠正,因为我无法弄清楚你要做什么,但是这一点看起来对我来说是狡猾的。
就是这样。 :) 修改了for循环,现在我已经正常工作。 谢谢codeulike。 – 2010-08-18 11:18:58