devxlogo

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

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 SubFunction 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 NothingEnd Function

devx-admin

Share the Post: