2010-08-18 3 views
0

새 행을 gridview에 추가하려고하지만 for 루프에 문제가 있습니다. dtcurrentTable.NewRow이 없었기 때문에, :gridview에 새 줄을 삽입 할 때 오류가 발생했습니다.

는 직접 "행 '행'인수가 null.Parameter 이름이 될 수 없습니다"오류가, dtCurrentTable.Rows.Add (drCurrentRow) 물론 간다 실행.

왜 이런 일이 발생합니까? 잘못된 정의

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 True

For i as Integer = 1 To i <= dtCurrentTable.Rows.Count
는 평가를 (내가 항상 < 때문에 = Rows.Count) 하는 VB는
For i as Integer = 1 To -1
으로 변환되므로 루프가 실행되지 않습니다.

이 당신이 drCurrentRow = dtCurrentTable.NewRow를 사용하는 방법에 대해 이상한 뭔가가있다, 또한

For i as Integer = 1 To dtCurrentTable.Rows.Count

해야한다. 루프에서 루프를 사용하지 않는 이유는 루프 내부입니까? 여러 번 실행되면 dtCurrentTable.Rows.Add(drCurrentRow)은 한 번만 호출됩니다.

당신이 뭘 하려는지 알아낼 수 없기 때문에 저를 위해 힘들어합니다. 그러나 그 비트는 나에게 대못으로 보입니다.

+0

그것은 그 것이었다. :) for 루프를 수정 했으므로 이제는 제대로 작동합니다. 코드를 적용 해 주셔서 감사합니다. –

관련 문제