2010-08-18 72 views
0

我正在嘗試向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 

回答

0

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