在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)只被调用一次。

我很难纠正,因为我无法弄清楚你要做什么,但是这一点看起来对我来说是狡猾的。

+0

就是这样。 :) 修改了for循环,现在我已经正常工作。 谢谢codeulike。 – 2010-08-18 11:18:58