Sharepoint WebPart Lifecycle Events


This post describes the lifecycle events of a Sharepoint Connectable WebPart wih a single ViewState backed property;

On Page Load

  1. Constructor
  2. OnInit
  3. OnLoad
  4. ConnectionConsumer method is called if web part is connectable (sets the connection providers interface in the webpart)
  5. CreateChildControls
  6. OnPreRender (if your web part is connectable you would typically call the connection provider here to retrieve data)
  7. SaveViewState
  8. Render
  9. RenderChildren
  10. RenderContents

On 1st Postback
(PostBack click handler sets ViewState via public Property)

  1. Constructor
  2. OnInit
  3. CreateChildControls
  4. OnLoad
  5. PostBack click handling
  6. ConnectionConsumer method is called if web part is connectable (sets the connection providers interface in the webpart)
  7. OnPreRender (if your web part is connectable you would typically call the connection provider here to retrieve data)
  8. SaveViewState
  9. Render
  10. RenderChildren
  11. RenderContents

On 2nd Postback
(PostBack click handler sets ViewState via public Property)

  1. Constructor
  2. OnInit
  3. LoadViewState
  4. CreateChildControls
  5. OnLoad
  6. PostBack click handling
  7. ConnectionConsumer method is called if web part is connectable (sets the connection providers interface in the webpart)
  8. OnPreRender (if your web part is connectable you would typically call the connection provider here to retrieve data)
  9. SaveViewState
  10. Render
  11. RenderChildren
  12. RenderContents

Note that during the 2nd postback, LoadViewState, is called, since in the 1st postback the click handler sets the value of the ViewState backed public property.

Published by

Phil Harding

SharePoint Consultant, Developer, Father, Husband and Climber.

16 thoughts on “Sharepoint WebPart Lifecycle Events

  1. I am having a problem when developing a MOSS webpart where am adding a LinkButton in GridView. The LinkButtons will be clicked by the user to download files.

    1) The GridView is getting created in CreateChildControls(). Also the event handlers like OnRowCommand are mapped here.
    2) The GridView is getting populated in OnPreRender(). This is because I only have the ConnectionConsumer value at this level from which I am creating the collection to assign as datasource. So the LinkButtons within the GridView get to be created at this level.
    3) When the LinkButtons are clicked they don’t fire the OnRowCommand event. Whereas Sort/Page fires the OnRowCommand.

    Since the LinkButtons are created only at the OnPreRender level, they are not getting mapped to the parent GridView’s OnRowCommand event.

    When I moved the populating code up in CreateChildControls (using a fixed value for Connection data) the LinkButtons are firing OnRowCommand!

    Any help?

  2. Hi,
    In my case, the LoadViewStae is not getting fired for my Web Part on the click of the LinkButton on the Toolbar and so the viewstate is not getting stored.
    Seems like its not getting fired at all. Only the SaveViewState is getting fired.
    Also what do you mean by Ist Post back and 2nd Postback in the article above ?
    I thought there is either a postback or not !
    What am I missing here ?
    Thank you in advance.

  3. 1st postback happens the first time you click the button, 2nd postback happens the 2nd time you click the button
    In this scenario, LoadViewState will only be called during the 2nd postback

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.