Avatar billede wired Nybegynder
13. juni 2004 - 21:47 Der er 9 kommentarer

Hvilken control henvender postback sig til

Hvordan kan jeg se hvilken control postback henvender sig til?

Jeg har en side med en masse usercontrols og når der trykkes på en knap vil jeg gerne i en vilkårlig usercontrols page_load se om postbacken er til den aktuelle control eller til en anden.

Dvs.

Usercontrol1.asxc.vb
----------------------
Private Sub Page_Load....
If not ispostback then
  If postback/event is to this control then ....
end if

Hvordan laver jeg linie:

  If postback/event is to this control then ....
Avatar billede guidmaster Nybegynder
13. juni 2004 - 21:59 #1
Jeg bruger denne lille snippet til at finde ud hvilken kontrol der bevirkede postback:
Function GetPostbackControl(ByVal targPage As Page) As Control
    If targPage.IsPostBack Then
        ' try to find the name of the postback control in the hidden
        ' __EVENTTARGET field
        Dim ctlName As String = targPage.Request.Form("__EVENTTARGET")
        ' if the string is not null, return the control with that name
        If ctlName.Trim().Length > 0 Then
            Return targPage.FindControl(ctlName)
        End If
        ' the trick above does not work if the postback is caused by standard
        ' buttons.
        ' In that case we retrieve the control the ASP-way: by looking in the
        ' Page's Form collection
        ' to find the name of a button control, that actually is the control
        ' that submitted the page
        Dim keyName As String
        For Each keyName In targPage.Request.Form
            Dim ctl As Control = targPage.FindControl(keyName)
            ' if a control named as this key exists,
            '  check whether it is a button - if it is, return it!
            If Not ctl Is Nothing Then
                If TypeOf ctl Is Button Then
                    Return ctl
                End If
            End If
        Next
    End If
    Return Nothing
End Function
Avatar billede guidmaster Nybegynder
13. juni 2004 - 21:59 #2
Og det var et svar
Avatar billede wired Nybegynder
13. juni 2004 - 22:31 #3
Takker... men er det virkelig så besværligt...

Jeg var selv inde på noget med
  Request.Form("__EVENTTARGET").Split(":", 6)(1).ToString

Skulle jeg ikke kunne skrive:

Response.write(GetPostbackControl(Page).id.tostring)

Den siger: Objektreferencen er ikke indstillet til en forekomst af et objekt.
Avatar billede guidmaster Nybegynder
13. juni 2004 - 22:42 #4
Er Page variablen som du sender med ind nu også det Page objekt som kontrollerne er på? Hvis du har metoden til at ligge på din side så skal den vel kaldes med Me:
Response.write(GetPostbackControl(Me).ID.ToString)
Avatar billede wired Nybegynder
13. juni 2004 - 23:56 #5
Har prøvet me,page og me.page men det virker ikke
Avatar billede guidmaster Nybegynder
14. juni 2004 - 12:58 #7
Er det knapper du har der laver postbacket? De er ikke registreret i __EVENTTARGET og derfor fejler min kodestup.
Avatar billede wired Nybegynder
21. juni 2004 - 13:33 #8
Kan det virkelig være sandt at jeg skal bruge:  Request.Form("__EVENTTARGET")
for at finde ud af hvilken kontrol som returnere et svar?
Avatar billede wired Nybegynder
21. juni 2004 - 13:50 #9
Det ser ikke ud til at brianv's link løser problemet.
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