Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB7
Expertise: Intermediate
Nov 10, 2003

GetPostbackControl - Return a reference to the control that caused the last postback

' 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
'
' Example:
'    Private Sub Page_Load(ByVal sender As System.Object,
'  ByVal e As System.EventArgs) Handles MyBase.Load
'        Dim postbackCtl As Control = GetPostbackControl(Me)
'        If Not postbackCtl Is Nothing Then
'            lblResult.Text = postbackCtl.ID
'        End If
'    End Sub

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

Marco Bellinaso
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date