[ASP.NET] Raar probleem met DataTable

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Ik probeer een class te maken waarmee ik messages kan toevoegen op me webpage voor bijvoorbeeld errors te laten zien, de code van de class staat hier onder

Code behind:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Public Class Messages
    Inherits System.Web.UI.UserControl

    Protected WithEvents rptMessages As Repeater
    Private dtMessages As New DataTable

    Public Enum Mode
        MsgError
        MsgInfo
        MsgSuccess
    End Enum

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dtMessages.Columns.Add("Text")
        dtMessages.Columns.Add("Class")
    End Sub

    Public Sub Add(ByVal Text As String, ByVal Mode As Mode)
        Dim MessageClass As String

        Select Case Mode
            Case Mode.MsgError
                MessageClass = "error"
            Case Mode.MsgInfo
                MessageClass = "info"
            Case Mode.MsgSuccess
                MessageClass = "success"
        End Select

        Dim dr As DataRow = dtMessages.NewRow()
        dr("Text") = Text
        dr("Class") = MessageClass
        dtMessages.Rows.Add(dr)
    End Sub

    Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
        dtMessages.DefaultView.Sort = "Class"
        rptMessages.DataSource = dtMessages
        rptMessages.DataBind()
    End Sub

End Class


Dan roep ik de user control zo aan:

Dim Messages As New Messages
Messages.Add("test", Messages.Mode.MsgError)

Maar dat werkt hiet, het lijkt wel alsof de dtMessages variable vergaat zogauw hij in de sub Add gebruikt wordt, als ik een row toevoeg in de Page_Load werkt het wel...
De kolom Text hoort niet bij de tabel .
Beschrijving: Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code.

Details van uitzondering: System.ArgumentException: De kolom Text hoort niet bij de tabel .

Fout in bron:


Regel 29:
Regel 30: Dim dr As DataRow = dtMessages.NewRow()
Regel 31: dr("Text") = Text
Regel 32: dr("Class") = MessageClass
Regel 33: dtMessages.Rows.Add(dr)
Op google kon ik niks concreets vinden hierover

help _/-\o_

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarschijnlijk is je Page_Load van je control nog niet uitgevoerd en dus heeft je DataTable nog geen Column "Text". Dat is ook precies wat je foutmelding zegt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Waarom dump je die dtMessages niet in de viewstate / Session, zodat je niet moeilijk hoeft de goochelen met de life cycle van een page-request?

Digitaal onderwijsmateriaal, leermateriaal voor hbo