Avatar billede gulbaek Nybegynder
21. april 2005 - 13:53 Der er 12 kommentarer og
2 løsninger

Skift mellem visning af 2 User Controls

Hejsa har lige brug for lidt hjælp.

Har en aspx side og ønsker at lave det sådan at når jeg trykker på knap 1, vises User Control 1 mens hvis jeg trykker på knap 2 vises User Control 2 og User Control 1 forsvinder.

Ser helst det laves i Code Behind og jeg koder i C#
Avatar billede henrikgn Nybegynder
21. april 2005 - 14:42 #1
UserControl har en egenskab der hedder Visible (denne nedarves fra klassen Control) - Denne sætter du til false på begge UserControls. Så er det bare at ændre denne egenskab i de to knappers Click event.
Avatar billede henrikgn Nybegynder
21. april 2005 - 14:47 #2
Går ud fra din UserControl ligger i en ascx-fil og du henter denne ind i aspx-filen således:

<UserControl:Toppen id="minHeader" runat="server"></UserControl:Toppen>

Den sættter du bare følgende ind i: visible="false". Og så laver du en alm. click event til knapperne:

<asp:Button id="btnKnap1" runat="server" OnClick="metode" />

Og så metoden:

public void metode(object sender, EventArgs e)
{
  minHeader.Visible = true;
}
Avatar billede gulbaek Nybegynder
21. april 2005 - 14:56 #3
henrikgn
Hvor skal jeg placere <UserControl:Toppen id= .......  Kan nemlig ikke få adgang til den fra min codebehind fil.
Avatar billede burningice Nybegynder
21. april 2005 - 17:36 #4
gulbaek>> går ud fra du har placeret UserControl:Toppen på din aspx-side

på din codebehind skal du nu have lavet et field i din klasse for at få adgang til din usercontrol. Dette field skal have samme type og id som useronctrollen. Du skal desuden huske at dette field skal være synligt for aspx-klassen, protected peler at være fint. Når du har gjort det har du nu adgang til din usercontrol fra din codebehind.

public class DinSide : (...) {

    protected Toppen idPåToppen;

    btn_Click(...) {
        idPåToppen.Visible = false;
    }

}
Avatar billede gulbaek Nybegynder
22. april 2005 - 10:41 #5
cyberfessor, nu har jeg fulgt dit eksemple, men det gav et Object reference not set to an instance of an object fejl.

rettede det ved at lave følgende protected Toppen idPåToppen = new Toppen();
Men når jeg trykker på knappen sker der ikke noget :-(
Avatar billede naxosnaxos Nybegynder
22. april 2005 - 11:44 #6
Jeg er selv ved at lave et site hvor jeg skal bruge forskellige usercontrols på samme side alt efter forskellige options. Jeg har lavet en place holder hvor jeg så loader min kontrol ind i. Denne løsning er også ret lige til alt efter hvordan man bestemmer hvilken der skal loades.
Jeg har f.eks. en switch hvor jeg så caser på hvilken værdi en variable har og kan så kalde LoadControl i de forskellige cases med forskellige kontroller. Det ser umiddelbart ud til at køre ok. Men skriv da endelig en kommentar ;)
Avatar billede henrikgn Nybegynder
22. april 2005 - 12:20 #7
Hej igen gulbaek

Jeg skulle lige have fundet koden frem fra mine gemmer, da jeg selv bruger noget lignende på min hjemmeside. Herunder kommer et eksempel, der virker. Der bruges dog IKKE CodeBehind, så ved ikke om du kan bruge det til noget:

Min aspx-side (gbook2.aspx) ser sådan ud:

<%@ Page Language="C#" Debug="true" validateRequest="false" %>
<%@ Register TagPrefix="UserControl" TagName="Indskrifter2" Src="usercontrols/signins2.ascx" %>
<%@ Register TagPrefix="UserControl" TagName="Indskrifter3" Src="usercontrols/signins3.ascx" %>

<script runat="server">
public void visUC2(object sender, EventArgs e)
{
    uc2.Visible = true;
      uc3.Visible = false;
}
public void visUC3(object sender, EventArgs e)
{
      uc2.Visible = false;
      uc3.Visible = true;
}
</script>
<html>
<body>
<form action="gbook2.aspx" method="post" runat="server">
<asp:Button ID="btn2" Runat="server" OnClick="visUC2" Text="Vis UserControl 2" />
<asp:Button ID="btn3" Runat="server" OnClick="visUC3" Text="Vis UserControl 3" />
</form>
<UserControl:Indskrifter2 id="uc2" runat="server" visible="false"></UserControl:Indskrifter2>
<UserControl:Indskrifter3 id="uc3" runat="server" visible="false"></UserControl:Indskrifter3>
</body>
</html>

Mine UserControls (signins2.ascx og singins3.ascx) er nogenlunde ens:

<%@ Control Language="C#" debug="true" %>
<script runat="server">

public void Page_Load()
{
lbl.Text = "Dette er UserControl signins2, der snakker!";
}
</script>
<asp:Label id="lbl" runat="server" />
Avatar billede henrikgn Nybegynder
22. april 2005 - 12:21 #8
I ovenstående vises ingen af usercontrols'ene som udgangspunkt. Der er blot to knapper, der så bruges til at vise de to UserControls.
Avatar billede gulbaek Nybegynder
22. april 2005 - 13:10 #9
Henrikgn, du kunne ikke tænke dig at vise eksemplet, hvor det bruger codebehind, er nemlig ikke den største fan at at placere for meget kode i aspx filerne.

Og fed hjemmeside du har, fandt nogle dejlig pinlige billeder af René(læste datamatiker sammen), så nu kan jeg bruge det som lidt afpresning :-)
Avatar billede burningice Nybegynder
22. april 2005 - 15:38 #10
gulbaek>> grunden til at du får en null-reference exception er fordi at id'erne på aspx-siden og i din codebehind ikke stemmer overens. Prøv at tjek en ekstra gang om du har stavet forkert eller lign.
Avatar billede henrikgn Nybegynder
22. april 2005 - 15:48 #11
gulbaek, jeg har desværre ikke megen forstand på codebehind, da jeg har det fint med kode og html i en stor pære-vælling :) Så håber en anden kan hjælpe dig der.

hehe, ja der er helt sikkert nogen belastende billeder at finde af René derinde... så bare afpres ham! :)
Avatar billede gulbaek Nybegynder
22. april 2005 - 17:30 #12
Takker cyberfessor, fik det til at virke med codebehind, smider du ikke lige et svar, så i kan deles om point.

og henrikgn, har skrevet til rené så nu skal han moppes, hvis du har flere pinlige billeder af ham, er du velkommen til at uploade dem :-)
Avatar billede burningice Nybegynder
22. april 2005 - 19:05 #13
:)
Avatar billede gulbaek Nybegynder
22. april 2005 - 21:12 #14
30 point hver, håber i er tilfreds :-)
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