Avatar billede stinejh1980 Nybegynder
19. februar 2007 - 15:01 Der er 7 kommentarer og
1 løsning

Button addhandler med dynamisk redirect

Jeg koder er ASP.NET 1.1 og VB 1.1

Jeg er ved at lave en menu som usercontrol.
Jeg har en placeholder i denne usercontrol hvor jeg dynamisk loader nogle knapper.

        MyCommand = New OleDbCommand
        MySQL = "SELECT UserAccess_Tbl.ProgramID AS UserAccess_Tbl_ProgramID, UserAccess_Tbl.Program AS UserAccess_Tbl_Program, UserAccess_Tbl.GroupID, Program_Tbl.ProgramID AS Program_Tbl_ProgramID, Program_Tbl.Program AS Program_Tbl_Program, Program_Tbl.ProgramBtn FROM Program_Tbl INNER JOIN UserAccess_Tbl ON Program_Tbl.ProgramID = UserAccess_Tbl.ProgramID WHERE UserAccess_Tbl.GroupID=" & UserAcces
        MyCommand.CommandText = MySQL
        MyCommand.Connection = MyConnection
        MyReader = MyCommand.ExecuteReader
        While MyReader.Read
            MyButton = New Button
            MyButton.Text = MyReader("ProgramBtn")
            MyButton.ID = "btn" & MyReader("UserAccess_Tbl_Program")
            MyButton.CssClass = "tbbtn_notinusepurple"
            AddHandler MyButton.Click, AddressOf My_Subprogram
            PHtitlebar.Controls.Add(MyButton)
            MyURL = MyReader("UserAccess_Tbl_Program")
        End While

Udtrækket fra Db ser således ud:
UserAccess_Tbl_ProgramID    GroupID    Program_Tbl_ProgramID    Program_Tbl_Program    ProgramBtn
2    1    2    adminuserUpdate    Update users
7    1    7    adminupdateprice    Update prices
15    1    15    hardware    Hardware
16    1    16    contactsindex    Contacts
18    1    18    inputschedule    Schedule
27    1    27    news    News
28    1    28    pricelist    Pricelist

Men det er i min My_Subprogram det går galt.

    Public Sub My_Subprogram(ByVal sender As Object, ByVal e As System.EventArgs)
        Response.Redirect("" & MyURL & ".aspx")

    End Sub

For lige gyldig hvilken knap jeg trykker på bliver jeg redirectet til pricelist.aspx
Avatar billede dr_chaos Nybegynder
19. februar 2007 - 15:18 #1
du skal bruge onprerender til at generer dine knapper igen.
Avatar billede stinejh1980 Nybegynder
19. februar 2007 - 15:23 #2
Ad hvad for noget? :-)Det er første gang jeg prøver at arbejde med en placeholder.

Skal jeg lave en prerender i min My_Subprogram?
Hvordan det?
Avatar billede dr_chaos Nybegynder
19. februar 2007 - 15:34 #3
Ja prøv at skrive protected override, så burde du se en masse ting du kan override deribland onprerender.
Avatar billede stinejh1980 Nybegynder
19. februar 2007 - 15:43 #4
Ja det gør der, men det hjælper mig ikke meget.
Avatar billede stinejh1980 Nybegynder
19. februar 2007 - 15:56 #5
Jeg har ikke prøvet denne form for dynamisk kodning før
Avatar billede dr_chaos Nybegynder
19. februar 2007 - 16:35 #6
Inde i den skal du lave et kald til den funktion som generer dine knapper
Avatar billede stinejh1980 Nybegynder
20. februar 2007 - 08:08 #7
Er du sikker på at du har forstået mit spsm rigtig?

Mit problem er ikke at jeg ikke kan se knapperne på den nye side jeg pliver redirectet til. Den redirecter mig til den forkerte side.

EKS:
Hvis jeg trykker på hardware knappen (teksten er rigtig)redirecter den mig til pricelist (sidst record i database udtræk)
Avatar billede stinejh1980 Nybegynder
20. februar 2007 - 15:41 #8
Jeg fandt ud af det selv.
Man skal huske at bruge sender.ID i onclock istedet for Button.ID i mit tilfælde.

Håber andre kan have gavn af det:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/Db.MDB") & ";")
        CreateTitlebar()
    End Sub

    Public Sub CreateTitlebar()
        'acces check
        Dim objCookie As HttpCookie = Request.Cookies("cookie")

        If Not objCookie Is Nothing Then

            strUserID = objCookie("UserID")

        End If
        MyConnection.Open()
        Dim UserAcces As String

        MyCommand = New OleDbCommand
        MySQL = "SELECT UserGroupID FROM UserDealer_Tbl WHERE CookieID=" & strUserID

        MyCommand.CommandText = MySQL
        MyCommand.Connection = MyConnection
        MyReader = MyCommand.ExecuteReader
        While MyReader.Read
            If Not IsDBNull(MyReader("UserGroupID")) Then
                UserAcces = MyReader("UserGroupID")
            End If
        End While
        MyReader.Close()

        'create menu
        MyCommand = New OleDbCommand
        MySQL = "SELECT UserAccess_Tbl.ProgramID AS UserAccess_Tbl_ProgramID, UserAccess_Tbl.Program AS UserAccess_Tbl_Program, UserAccess_Tbl.GroupID, Program_Tbl.ProgramID AS Program_Tbl_ProgramID, Program_Tbl.Program AS Program_Tbl_Program, Program_Tbl.ProgramBtn FROM Program_Tbl INNER JOIN UserAccess_Tbl ON Program_Tbl.ProgramID = UserAccess_Tbl.ProgramID WHERE UserAccess_Tbl.GroupID=" & UserAcces
        MyCommand.CommandText = MySQL
        MyCommand.Connection = MyConnection
        MyReader = MyCommand.ExecuteReader
        While MyReader.Read
            MyButton = New Button
            MyButton.Text = MyReader("ProgramBtn")
            MyButton.ID = MyReader("UserAccess_Tbl_Program")
            MyButton.CssClass = "tbbtn_notinusepurple"
            AddHandler MyButton.Click, AddressOf My_Subprogram
            PHtitlebar.Controls.Add(MyButton)
        End While
        MyConnection.Close()

    End Sub

    Private Sub My_Subprogram(ByVal sender As Object, ByVal e As System.EventArgs)
        Response.Redirect("" & sender.ID & ".aspx")
    End Sub

    Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
        CreateTitlebar()
    End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester