[ASP.NET]Dynamisch oproepen van controls

Pagina: 1
Acties:

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ik heb een applicatie gemaakt (in VB) waarin ik met verschillende panels werk. Boven aan deze panels staat een asp:imageButton die van + naar - verspringt voor het openen en sluiten van de panels. Elke knopje heeft een CommandName en een CommandArgument.

bijvoorbeeld
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
<asp:imagebutton 
CommandArgument="talen"  
OnCommand="panelSluiten" 
CommandName="sluiten" 
ImageAlign="Right" 
AlternateText="Panel sluiten" 
ID="imgOpenCloseTalen" 
ImageUrl="images/gif/min.gif" 
runat="server" />


In de Subroutine 'panelSluiten' laat ik de panels, afhankelijk van de CommandName en CommandArgument sluiten danwel openen. Dit allemaal dmv een Select Case gebeuren. Dat werkt prima.

Nu mijn vraag:
Is het mogelijk om het Select Case gebeuren over te slaan en hier een dynamischer geheel van te maken?
Ik zat dan te denken aan het volgende:
Elk panel heeft een id, in dit geval dus 'pnlTalen'. Kan ik dit panel oproepen in een subroutine dmv de CommandArgument?

Dus ipv:
Visual Basic .NET:
1
pnlTalen.visible = false


wordt het dan iets van:
Visual Basic .NET:
1
pnl & e.CommandArgument.vissible = false


Het bovenstaande is natuurlijk een schets en niet werkbaar maar ik heb vanalles geprobeerd maar ik krijg constant de melding dat het pnl dat ik wil oproepen niet is gedefinieerd. Ik kon verder nergens iets vinden. Alleen maar voorbeelden met lange lijsten waarin per control de visible parameter wordt gesteld.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

FindControl() icm CType()

Visual Basic .NET:
1
CType(Me.Fincontrol("ControlnameToFind"),Panel).Visible = False

[ Voor 103% gewijzigd door gorgi_19 op 08-10-2003 18:56 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
GEWELDIG! En weer redt gorgi_19 me uit de brand!!! _/-\o_
Daar was ik naar op zoek!

Heb al een paar goeie voorbeelden gevonden. Sleutelwoord was 'FindControl'

[ Voor 32% gewijzigd door Folkert op 08-10-2003 19:01 ]


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Het werkt nu als een tierelier. Een statement met 16 Cases verminderd naar 2 cases. Hieronder mijn code:

ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub panelSluiten(sender As Object, e As CommandEventArgs)
    Dim panelActie As String = e.CommandName
    Dim panelNaam As String = e.CommandArgument
    
    Select Case panelActie
        Case "sluiten"
            CType(Me.FindControl("pnl" & panelNaam),Panel).Visible = False
            CType(Me.FindControl("imgOpenClose" & panelNaam),imageButton).imageUrl = "images/gif/plus.gif"
            CType(Me.FindControl("imgOpenClose" & panelNaam),imageButton).CommandName = "open"
        Case "open"
            CType(Me.FindControl("pnl" & panelNaam),Panel).Visible = True
            CType(Me.FindControl("imgOpenClose" & panelNaam),imageButton).imageUrl = "images/gif/min.gif"
            CType(Me.FindControl("imgOpenClose" & panelNaam),imageButton).CommandName = "sluiten"
    end Select
    
End Sub

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 is altijd voor defensief programmeren.. :P

Visual Basic .NET:
1
2
3
Case Else

     Throw new Exception("panelSluiten::PanelNotFound:" & panelNaam)

:P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Thanx, die neem ik mee!
offtopic:
En weer had gorgi_19 het laatste woord... |:( ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Folkert schreef op 08 October 2003 @ 19:38:
Thanx, die neem ik mee!
offtopic:
En weer had gorgi_19 het laatste woord... |:( ;)
Om toch het laatste woord te hebben... Je gaat me toch niet vertellen dat je 16 imagebuttons hebt he? :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
16? Ik heb er maar 2... plus.gif en min.gif. Maar ze krijgen bij het openen van de panels een unieke ID anders kan ik de imageUrl niet veranderen....
De image ide is gekoppeld aan het panelArgument.
In de pagina staat overigens per panel één imagebutton, als je dat bedoeld. En deze krijgen dus allemaal de imageUrl toegewezen door de sub

[ Voor 42% gewijzigd door Folkert op 08-10-2003 19:48 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Folkert schreef op 08 oktober 2003 @ 19:43:
In de pagina staat overigens per panel één imagebutton, als je dat bedoeld. En deze krijgen dus allemaal de imageUrl toegewezen door de sub
* gorgi_19 mompelt iets over dynamische controls.... :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1