Welcome to Professional ASP.NET - Chris Love's Official Blog Sign in | Join | Help

Chris Love's Official ASP.NET Blog

Chris Love's Helpful tips, tricks and pragmatic development knowledge for the ASP.NET world.
Add to Technorati Favorites


ASP Insider Follow Me On Twitter
Cross Page Postback - Getting Control

Cross page postbacks are a great feature introduced with ASP.NET 2.0 that allows a developer to specify another page/form to submit the form.  This gives us more control over our site and helps us get away from nasty data manangement coding on the backend side.  This new feature howerver introduces the need to consistently access the controls from the previous page.  I decided to write some wrappers to help with this functionality.

I found that this process is a pretty consistent format and thus can be replicated for any control. 

    Public Function GetPreviousPageControl(ByVal sPPC As String) As Control

        If Not IsNothing(PreviousPage) Then

            If Not IsNothing(PreviousPage.Master) Then

                Dim content As ContentPlaceHolder
                content = PreviousPage.Master.FindControl("ContentPlaceHolder1")

                Return content.FindControl(sPPC)

            Else
                Return PreviousPage.FindControl(sPPC)
            End If

        End If

        Return Nothing

    End Function

For us to use this you need to create a method for each type of control you may use.  These are examples for a TextBox and a Drop-Down List box.  I do have some wrapper methods for some Infragistics controls, so it works with any control that can be found with the FindControl method of the PreviousPage object.


    Public Function GetPreviousPageTextBox(ByVal tbName As String) As TextBox

        If Not IsNothing(PreviousPage) Then

            If Not IsNothing(PreviousPage.Master) Then

                Dim content As ContentPlaceHolder
                content = PreviousPage.Master.FindControl("ContentPlaceHolder1")

                Return content.FindControl(tbName)

            Else
                Return PreviousPage.FindControl(tbName)
            End If

        End If

        Return Nothing

    End Function

    Public Function GetPreviousPageDropDownList(ByVal ddlName As String, cph as string = "ContentPlaceHolder1") As DropDownList

        If Not IsNothing(PreviousPage) Then

            If Not IsNothing(PreviousPage.Master) Then

                Dim content As ContentPlaceHolder
                content = PreviousPage.Master.FindControl(cph)

                Return content.FindControl(ddlName)

            Else
                Return PreviousPage.FindControl(ddlName)
            End If

        End If

        Return Nothing

    End Function

Notice the format of the function, I checkt o see if there is a Master Page defined or not.  If there is a Master Page, then you need to grab an instance of the ContentPlaceHolder.  You will notice that I have hard coded the id of the ContentHolder, but you might want to make that a variable that can be defined as a parameter in your method definition.  I demonstrated this for the DropDownListBox Method.

An important note is that when you get the instance of your control you will want to make sure the control actually exist before using it.

dim tbSample as TextBox = GetPreviousPageTextBox("tbSample")

if not isnothing(tbSample) then

   'Process the data as needed.

end if

 

Posted: Tuesday, October 03, 2006 12:48 PM

by Chris Love
Filed under: , ,

Comments

No Comments

Leave a Comment

(required) 

(required) 

(optional)

(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS