Avatar billede lars-k Nybegynder
27. oktober 2002 - 15:46 Der er 24 kommentarer og
1 løsning

To knapper på samme form...

Hej

Jeg mangler lidt input til hvordan jeg kan strikke en løkke samme - problemet ligger i hvordan jeg skelner mellem mine to knapper, hvor jeg enten gør det ene eller det andet, som aktiveres ved eventuel postback. Det er sikkert ikke særligt svært - dog åbenbart for mig:-)

*************************'

If Page.IsPostBack Then
  If "jeg har trykket på knap 1" Then
        kode der afvikles
  Elseif "jeg har trykket på knap 2" Then
        kode der afvikles
  End if

  ........
  ........
End if
Avatar billede simon.ulsnes Nybegynder
27. oktober 2002 - 15:53 #1
Du skal bruge events i stedet for....

<asp:Button id="Button1" OnClick="Button1Click" Text="Button1" runat="server" /><br />
<asp:Button id="Button2" OnClick="Button2Click" Text="Button2" runat="server" />

I dit script-tag i starten eller i din CodeBehind gør du sådan:

Shared Sub Button1Click(sender As Object, e As EventArgs)
  ' Gør hvad du vil for Button1
End Sub

Shared Sub Button2Click(sender As Object, e As EventArgs)
  ' Gør hvad du vil for Button2
End Sub

Shared Sub Page_Load(sender As Object, e As EventArgs)
  ' ...
End Sub

Er ikke helt sikker på syntaksen, jeg koder normalt i C#...

// Simon
// This sentence no verb.
Avatar billede lars-k Nybegynder
27. oktober 2002 - 15:57 #2
tester lige ......
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:01 #3
Jeg har en arraylist som jeg skal henholdsvis tilføje/slette i - jeg kan ikke tilgå arraylisten fra en sub. Det er vist egentligt det der er problemet.

Lars-k
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:03 #4
...her er eksempelkoden:

Sub Page_Load(Source As Object, E as EventArgs)

    Dim MinArrayList as New ArrayList()
    Dim strText As String
    Dim strTilfoejNavn As String
    Dim Item As String
   
    MinArrayList.Add("Ole")
    MinArrayList.Add("Per")

    'listen skrives
    For Each Item In MinArrayList
        strText = strText & " <br/>" & Item
    Next

    OutputLabel.Text = "Køen ser du her:<br/><br/>" & strText

End Sub

Shared Sub Tilfoej(sender As Object, e As EventArgs)
   
    MinArrayList.Add("Jørgen")
   
End Sub
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:04 #5
Du kan sagtens bruge den samme onClick-funktion (eller page_load for den sags skyld), og så teste på hvilken af knapperne der blev trykket på (vha. sender-objektet).
Men simons løsning er nu nok den simpleste løsning.
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:05 #6
lars-k:
Den nemme løsning er at smide MinArrayList erklæringen uden for Page_Load. Så kan du tilgå den fra hvor som helst. Page_Load bliver kørt først, hvorefter din onclick-sub bliver udført.
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:11 #7
.....kigger lige på det - 5 min.....
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:19 #8
....nu ser koden sådan ud. Jeg kan godt indsætte det nye navn/teksten, men jeg bibeholder ikke det eksisterende navn - arraylisten tømmes.....

Dim MinArrayList as New ArrayList()

Sub Tilfoej(sender As Object, e As EventArgs)

    Dim strText As String
    Dim Item As String
   
    'navn fra form
    MinArrayList.Add(InputText.Text)
   
    'listen
    For Each Item In MinArrayList
        strText = strText & " <br/>" & Item
    Next

    'listen skrives
    OutputLabel.Text = "Medlemmer:<br/><br/>" & strText
   
End Sub
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:22 #9
Hvordan ser din Page_Load ud nu så?
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:23 #10
...jeg har ikke en page_load nu.
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:30 #11
jamen, hvornår indsætter du så Ole og Per ?
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:33 #12
...jeg har lavet lidt om i koden. Det startes med en tom liste og der bliver så fyldt på hen af vejen med Sub TilFoej. Det virker som udemærket, jeg får bare min liste nulstillet hver gang jeg vil tilføje et nyt navn.
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:34 #13
ja det er da klart. ArrayList bliver jo oprettet på ny, hver gang siden køres.
Det er som at lukke et windows-program og starte det igen. Du gemmer jo ikke din arraylist på harddisken, eller lignende steder, hvor du kan hente dem frem igen.
Avatar billede lars-k Nybegynder
27. oktober 2002 - 16:38 #14
Det egentlige problem er nemlig lige det - jeg vil kunne tilføje/slette i listen og stadig bibeholde de gamle navne...
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:40 #15
MÅDEN at gøre det på, er at benytte databaser.
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:40 #16
Du kan i teorien også gemme i Application-variabler, men genstartes applicationen eller server, ryger alle dine værdier.
Avatar billede simon.ulsnes Nybegynder
27. oktober 2002 - 16:41 #17
Du kan evt. gemme den i en Session-variabel.

Session("Medlemmer") = New ArrayList()
i din Page_Load under If Not Page.IsPostBack

// Simon
Avatar billede odegaard Nybegynder
27. oktober 2002 - 16:58 #18
Session har endnu kortere levetid end Application
Avatar billede lars-k Nybegynder
27. oktober 2002 - 17:03 #19
...det er ikke noget vigtigt jeg skal gemme i listen - det er bare et forsøg, som altså må lade kunne sig gøre. Det kan vel sammenlignes med en "indkøbskurv" - der skal bare nogle navne i......
Avatar billede odegaard Nybegynder
27. oktober 2002 - 17:26 #20
Så benyt session som simon foreslår.
Istedet for
    MinArrayList.Add(InputText.Text)
Skriver du
    Session("Medlemmer").Add(InputText.Text)

Dvs. erstat alle referencer til MinArrayList med Session("Medlemmer").
Du skal dog kun erklære Session("Medlemmer") én gang (tjek for om den er nothing).
Avatar billede lars-k Nybegynder
27. oktober 2002 - 17:36 #21
Tak - jeg kigger lige på det...vender tilbage i aften.
Avatar billede lars-k Nybegynder
27. oktober 2002 - 19:21 #22
Tak for hjælpen odegaard - også til dig Simon, men jeg har givet odegaard point, da det var den prik over i'et jeg manglede. Koden ser sådan ud nu, men jeg mangler lige at strikke noget sammen til at fjerne navne - det skulle jeg nok kunne klare nu.

******************************************

Sub Page_Load

    If NOT Page.IsPostBack then
        Session("Medlemmer") = New ArrayList()
    End if
   
End Sub


Sub Tilfoej(sender As Object, E As Eventargs)

    Dim strText As String
    Dim Item As String

    Session("Medlemmer").Add(InputText.Text)

    For Each Item In Session("Medlemmer")
        strText = strText & " <br/>" & Item
    Next

    'listen skrives
    OutputLabel.Text = "Medlemmer:<br/><br/>" & strText

End sub

**************************************

Lars-k:-)
Avatar billede simon.ulsnes Nybegynder
27. oktober 2002 - 20:46 #23
Hmmm, det synes jeg altså ikke er helt retfærdigt, men OK så...
Avatar billede odegaard Nybegynder
27. oktober 2002 - 21:05 #24
næ, jeg vil nu også give simon ret, men det kan være lyset lyser på dig en anden dag lars-k spørger.
Avatar billede simon.ulsnes Nybegynder
27. oktober 2002 - 21:07 #25
hehe, ja :-)
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