27. april 2004 - 23:42Der er
6 kommentarer og 2 løsninger
Hvilken knap der er trykket på
Hej
Hvis jeg nu har en form med flere knapper og links, hvordan kan jeg så i page_load aflæse hvilken knap/hyperlink der er trykket på. Jeg ved godt at jeg kan lave en onclick_event som udføres når knappen aktiveres, men hvis jeg nu gerne vil undgå at noget kode bliver udført i page_load når en bestemt knap aktiveres.
' Return a reference to the control that caused the last postback, ' even from the Page_Load event! ' It requires in input a reference to the posted-back page ' (this is necessary if you want to be able to move this function in a separate ' class instead of in a page's codebehind class
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
Den med session-variabel og querystring, har jeg prøvet/bruger jeg, men den metode, har jo ikke ret meget med .net agtig programmering at gøre, så derfor var jeg ret sikker på at der måtte være en rimelig nem måde at aflæse hvilken knap der var trykket på.
page_load har jo flg. parameter 'sender As System.Object, ByVal e As System.EventArgs' så der burde da være en metode ala. dim knap_trykket = sender.GetSender.name eller dim knap_trykket = e.Get_Den_Der_Udløste_Event.name eller noget i den stil.
guidmaster>> Din rutine har jeg ikke prøvet, men det ser jo heller ikke særlig simpel ud, så kan man ligeså godt bruge en session-variabel.
wolker>> Hvor simpelt skal det være? Du har den metode i din Base Page og skal lave et kald til metoden hvis du vil bruge den? Resten er cut and past.....hvad er det du vil have?
.NET er så flink at hjælpe med en onclick-event. Ligesom quidmaster kan jeg heller ikke se hvordan det overhovedet kan være simplere.
Synes godt om
Ny brugerNybegynder
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.