Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.NET] Variable in heel de klasse gebruiken

Pagina: 1
Acties:
  • 28 views sinds 30-01-2008

  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 29-11 19:44
Ik ben dus volop code aan het schrijven voor mijn stage.
Maar ik stuit op een probleem. Ik lees in een array alle gegevens in.
Daaarna heb die bovenaan in het begin van de classe als Private gedeclareerd.

ASP:
1
Private medewerkernummer() as string


Deze word ingelezen in wanneer een checkboxlist wordt verandert.
Dit lukt allemaal goed maar wanneer ik dan deze wil terug uitlezen wanneer
op een button wordt geklikt dan is deze helemaal leeg. Hoe komt dit?
Eerst stond overal Protected Sub , dat heb ik eens veranderd naar public en private
Maar dat helpt niets.En de class zelf heb ik ook eens verandert stond eerst op Partial class.
Maar hielp ook niets. Iemand die me kan helpen?

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class _Default
    Inherits System.Web.UI.Page

    Private fout As String
    Private filiaalnaam() As String
    Private kassanummer() As String
    Private medewerkernaam() As String
    Private medewerkernummer() As String
    Private filiaalnummer() As String
    Private filiaalkassa(,) As String
    Private filiaalkassanaam(,) As String
    Private aantalfiliaal, i, j, k, l, m, aantalkassa, aantalmedewerkers As Integer

    Public Sub Submit1_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Submit1.ServerClick

hier spreek ik de array's terug aan

End sub

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Misschien handig dat je laat zien hoe je het inlezen en uitlezen doet? Je zou bijv. het uitlezen in een andere instantie kunnen doen dan waar je de zaken hebt ingelezen. Kan je wat relevante code geven?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Je moet er rekening mee houden dat de instance in z'n geheel opnieuw wordt opgebouwd bij elke request. De variabelen weer vullen doet asp.net via o.a. de viewstate. Je controls worden automatisch gevuld (tenzij je anders aangeeft), maar je eigen variabelen (nog) niet. Ik zou eens een searchje wagen op google naar viewstate.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:51

gorgi_19

Kruimeltjes zijn weer op :9

Na een postback ontstaat een nieuwe request, waarna je dus de pagina weer opnieuw laadt en alle variabelen dus weer leeg zijn. Wil je ze bewaren, dump het dan in een session of viewstate.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 29-11 19:44
Zo vul ik de array in voor mijn medewerkers en dit lukt perfect.
Als er in de checkboxlist veranderd
Maar als ik dan op de button druk dan is alles eruit.
Kan je zomaar in session ook een array steken?

ASP:
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
43
44
45
46
47
48
49
50
51
52
53
54
  Public Sub CheckBoxListMedewerker_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxListMedewerker.SelectedIndexChanged
        Dim aantalGeselecteerd As Integer = 0
        Dim li As ListItem
        Dim cmd As SqlCommand

        aantalmedewerkers = CheckBoxListMedewerker.Items.Count - 1
        ReDim medewerkernaam(aantalmedewerkers)
        ReDim medewerkernummer(aantalmedewerkers)


        For Each li In CheckBoxListMedewerker.Items
            If li.Selected = True Then
                medewerkernaam(m) = li.Value
                aantalGeselecteerd += 1
            End If
            m += 1
        Next li
        If aantalGeselecteerd = 0 Then
            fout = "Geen Medewerkers geselecteerd"
            MsgBox(fout)
        End If


        For m = 0 To aantalmedewerkers
            Dim connmed As New SqlConnection(ConfigurationManager.AppSettings("ConnString"))
            If Not medewerkernaam(m) = "" Then
                Try
                    cmd = New SqlCommand("sp_medewerkernummer", connmed)
                    cmd.CommandType = CommandType.StoredProcedure
                    Dim Param1 As New SqlParameter("@naam", SqlDbType.VarChar, 255)
                    cmd.Parameters.Add(Param1)
                    Param1.Direction = ParameterDirection.Input
                    Param1.Value = medewerkernaam(m)
                    Dim Param2 As New SqlParameter("@medewerkernummer", SqlDbType.VarChar, 255)
                    cmd.Parameters.Add(Param2)
                    Param2.Direction = ParameterDirection.Output

                    connmed.Open()
                    cmd.ExecuteNonQuery()

                    medewerkernummer(m) = cmd.Parameters("@medewerkernummer").Value.ToString

                    cmd.Dispose()

                    connmed.Close()
                    connmed.Dispose()

                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            End If
        Next

    End Sub

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 30-11 19:45

TeeDee

CQB 241

Sven_Vdb schreef op maandag 08 oktober 2007 @ 17:06:
Maar als ik dan op de button druk dan is alles eruit.
Kan je zomaar in session ook een array steken?
Ja.

dat kan je natuurlijk ook eerst proberen... vergeet niet om je session weer te casten naar een array

offtopic:
een MsgBox in asp.net?

[ Voor 4% gewijzigd door TeeDee op 08-10-2007 17:14 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 29-11 19:44
Zal het eens proberen.
Die msgbox is zeer handig bij het debuggen :)
Al veel hulp van gehad

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:51

gorgi_19

Kruimeltjes zijn weer op :9

Sven_Vdb schreef op maandag 08 oktober 2007 @ 17:17:
Zal het eens proberen.
Die msgbox is zeer handig bij het debuggen :)
Al veel hulp van gehad
Debug.Assert?
Trace.Warn?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 29-11 19:44
Het vorige probleem is opgelost door de session te gebruiken.
Dus dank je wel daarvoor.Maar nu zit ik met een volgend probleem.
Wanneer ik 1 medewerker geselecteerd heb dan krijg ik de juiste info op mijn
gridview,maar vanaf er 2 of meer medewerkers in de array zitten blijft mijn hele
gridview leeg.
Is dit omdat de datareader niets opslaat in cache (normaal niet want is al doorgegeven naar gridview).
Kan de gridview geen extra gegevens aan(toevoegen)?Vind ik zo direct niets van.

ASP:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Public Sub Submit1_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Submit1.ServerClick     
        Try
            If sFormatStart = sFormatEind Then
                For m = 0 To aantalmedewerkers
                    If Not medewerkernummer(m) = "" Then
                        cmd = New SqlCommand("sp_rapportage2crit", conn)
                        cmd.CommandType = CommandType.StoredProcedure
                        Dim Param1 As New SqlParameter("@datumstart", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param1)
                        Param1.Value = sFormatStart
                        Dim Param2 As New SqlParameter("@datumeind", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param2)
                        Param2.Value = sFormatEind
                        Dim Param3 As New SqlParameter("@uurstart", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param3)
                        Param3.Value = sFormatUurstart
                        Dim Param4 As New SqlParameter("@uureind", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param4)
                        Param4.Value = sFormatUureind
                        Dim Param5 As New SqlParameter("@medewerker", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param5)
                        Param5.Value = medewerkernummer(m)

                        conn.Open()
                        dr = cmd.ExecuteReader

                        If Not dr.HasRows Then
                            conn.Close()
                            Exit Sub
                        Else
                            GridView.Visible = True
                            GridView.DataSource = dr
                            GridView.DataBind()
                            dr.Close()
                            cmd.Dispose()
                            conn.Close()
                            'conn.Dispose()
                        End If
                    End If
                Next
            Else
                For m = 0 To aantalmedewerkers
                    If Not medewerkernummer(m) = "" Then
                        cmd = New SqlCommand("sp_rapportage3crit", conn)
                        cmd.CommandType = CommandType.StoredProcedure
                        Dim Param15 As New SqlParameter("@datumstart", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param15)
                        Param15.Value = sFormatStart
                        Dim Param16 As New SqlParameter("@datumeind", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param16)
                        Param16.Value = sFormatEind
                        Dim Param17 As New SqlParameter("@uurstart", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param17)
                        Param17.Value = sFormatUurstart
                        Dim Param18 As New SqlParameter("@uureind", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param18)
                        Param18.Value = sFormatUureind
                        Dim Param19 As New SqlParameter("@medewerker", SqlDbType.VarChar, 255)
                        cmd.Parameters.Add(Param19)
                        Param19.Value = medewerkernummer(m)

                        conn.Open()
                        dr = cmd.ExecuteReader

                        If Not dr.HasRows Then
                            conn.Close()
                            Exit Sub
                        Else
                            GridView.Visible = True
                            GridView.DataSource = dr
                            GridView.DataBind()
                            dr.Close()
                            cmd.Dispose()
                            conn.Close()
                            'conn.Dispose()
                        End If
                    End If
                Next
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:52
Ik denk dat je beter eens leert om zelf je code te debuggen. Dit is toch een vraag die je makkelijk zelf moet kunnen oplossen door gebruik te maken van de debugging-faciliteiten van je IDE.
Je post hier nu een hoop code, en als je verwacht dat iemand de oplossing voor jou zoekt, zal die persoon ook moeten debuggen. Dus, dat kan je evengoed zelf doen. Zowiezo moet je -als je wil programmeren- in staat zijn om dit zelf te kunnen doen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.