ASP.NET мой datatable теряет данные во время цикла for

#asp.net #datatable #webforms

#asp.net #datatable #веб-формы

Вопрос:

Доброе утро. У меня проблемы с таблицами данных в приложении веб-формы. Мне нужно создать многостраничный PDF-файл (используя itext7), поэтому я создал datatable через объект:

  Private Function GetConnection() As SQLiteConnection
    Return New SQLiteConnection("Data source=" amp; HttpContext.Current.Server.MapPath("~/App_Data/") amp; "db.db; Version = 3;")
End Function
Private Function Seleziona(ByRef query As String) As DataTable
    Dim cnn As SQLiteConnection = GetConnection()
    Try
        Dim dt As DataTable
        cnn.Open()
        Dim cmd = cnn.CreateCommand()
        Dim sda = New SQLiteDataAdapter(query, cnn)
        ds.Reset()
        sda.Fill(ds)
        dt = ds.Tables(0)
        Return dt
    Catch ex As Exception
        Throw ex
    Finally
        ds.Dispose()
        cnn.Close()
        cnn.Dispose()
    End Try
End Function
  

Вызывающий код выглядит следующим образом:

 Public Sub CreaElencoZonaGialla(ByRef dest As String, Optional ByRef team As String = "0")
    Dim db As New GetData
   ... declarations ...
    Dim doc As New Document(pdf, PageSize.A4)
    Dim dtteams As DataTable
    If team = "0" Then
        dtteams = db.ListAll("t_societa")
    Else
        dtteams = db.ListW1Parameter("t_societa", New WebControls.ListItem("id", " = " amp; team))
    End If
    doc.SetMargins(25, 15, 25, 30)
    If dtteams.Rows.Count > 0 Then
        Dim conta As Int16 = 0
        For Each row As DataRow In dtteams.Rows
            conta  = 1
            If conta > 1 Then
                doc.Add(New AreaBreak(AreaBreakType.NEXT_PAGE))
            End If
            ... itext code
            cell.Add(CreaTabellaPDF("t_veicoli", New WebControls.ListItem("id_team = ", row(0).ToString)))
            tbl.AddCell(cell)
            doc.Add(tbl)
        Next
    Else
        p = New Paragraph(New Text("Non ci sono team registrati")).SetFontSize(15.0F)
        doc.Add(p)
    End If





    doc.Close()
End Sub
Function CreaTabellaPDF(ByVal tabella As String, parametri As WebControls.ListItem) As Table
    Dim db2 As New GetData
    Dim tbl As Table
    Dim cell As Cell
    Dim p As Paragraph
    Dim t As Text
    Dim dt As DataTable = db2.ListW1Parameter(tabella, parametri)
    If dt.Rows.Count = 0 Then
        tbl = New Table(New Single() {100})
        tbl.UseAllAvailableWidth()
        cell = New Cell
        p = New Paragraph(New Text("Non ci sono record registrati"))
        cell.Add(p)
        tbl.AddCell(cell)
    Else
        tbl = New Table(New Single() {100})
        tbl.UseAllAvailableWidth()
        cell = New Cell
        p = New Paragraph(New Text("Ci sono record registrati"))
        cell.Add(p)
        tbl.AddCell(cell)
    End If


    Return tbl
End Function
  

Кажется, что когда я загружаю таблицу данных в «CreaTabellaPDF», другая таблица данных (dtteams) теряет данные и, очевидно, выдает мне ошибку «Коллекция была изменена; операция перечисления может не выполняться».
Кто-нибудь может помочь мне найти мою ошибку?

Заранее спасибо.

Комментарии:

1. проблема начинается внутри GetData того, что у вас есть, теперь покажите это здесь

2. Извините, но я не понимаю… getData — это класс, из которого я извлекаю данные с помощью «Seleziona»… В коде я создаю новый экземпляр для получения данных с именем db, затем я вызываю db.SelectW1Parameter(таблица, параметры). Где ошибка?

3. После небольшого поиска в Google я нашел обходной путь. Я преобразовал таблицу данных в listOf (String) и повторил ее работу. Но я думаю, что это неправильное решение…