#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) и повторил ее работу. Но я думаю, что это неправильное решение…