26. juli 2007 - 11:48Der er
9 kommentarer og 1 løsning
Adgang til Masterpage kontroller fra Custom Class
Hey..
Jeg har en masterpage med et panel, der skal vises eller ikke vises afhængig af siden og nogle andre ting. På siderne kører jeg en funktion i min custom class, som derfra skal styre om panelet bliver vist eller ej.
Pseudo-kode:
************************ customclass.vb:
Public Function getvisning(diversevariabler) 'Diverse kald til database, der finder ud af om panelet skal vises eller ej. 'Returnerer True eller False.. End
Public Sub vispanel(ByVal bVispanel) 'Visning af Panel i masterpagen Panel.Visible = bVispanel End Sub
************************ side.aspx:
Dim cc AS New customclass
cc.vispanel(getvisning(diversevariabler))
************************
Jeg kan så bare ikke helt gennemskue hvordan man får fat i masterpagen til den side, der har kaldt funktionen vispanel. Der er kun en enkelt masterpage på hele sitet. Af forskellige årsager er det nødvendigt at kalde visningen af panelet fra min custom class og ikke fra hver side. Så hvordan gør man lige det?
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Din custom class ligger formentligt for sig selv og aner intet om masterpages. Så skal den kaldes fra content siden med myClass.myMethod(....., myMasterPage...) hvor metoden så skal have en property med typen MasterPage defineret i sin parameter liste
Hmm.. Det lyder da underligt at det er sådan man er nødt til at gøre det. Men på den anden side lyder det jo egentlig også meget logisk at min custom class ik aner noget om hvilken masterpage der bliver brugt hvor.
Anyway. Hvis jeg så vil gøre som du foreslår, hvordan skal det så gøres helt præcis?
Altså .. hvis din masterpage har en specifik panel som hedder myPanel så bør det vel se sådan her ud:
Public Sub vispanel(BYVal bVisPanel as Boolean, ByVal myMasterPage as MasterPage) myMasterPage.myPanel.Visible = bVispanel End Sub
Nu er det uklart om du har gjort som jeg skrev 12:11:39 eller ej i- hvis ikke, så skal du nok lave noget i denne stil:
Public Sub vispanel(BYVal bVisPanel as Boolean, ByVal myMasterPage as MasterPage) dim myPanel as Panel myPanel = Ctype(myMasterPage.FindControl("name_of_my_panel"), Panel) myPanel.Visible = bVispanel End Sub
Nu ved jeg ikke helt hvor du er henne - har du <%@ MasterType virtualpath="~/MinMastersNavn.master" %> inkluderet ? I det fald skal de public properties være typed og du skal nok have følgende i code behind på din master
Public ReadOnly Property myPanel As Panel Get myPanel = Panel1 ' hvis det er panel 1 End Get
End Property
Hvis du ikke har inkluderet den, så bør følgende fungere
Public Sub vispanel(BYVal bVisPanel as boolean, ByVal myMasterPage as MasterPage) dim myPanel as Panel myPanel = Ctype(myMasterPage.FindControl("name_of_my_panel"), Panel) myPanel.Visible = bVispanel End Sub
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.