O'Reilly logo

Essential SharePoint by Jeff Webb

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Adding Menus

To add a menu to a web part, override CreateWebPartMenu to add MenuItem objects to the web part's MenuItems collection. For example, the following code adds a Save Settings item to the web part menu:

      Dim _mnuSave As MenuItem
 
      Public Overrides Sub CreateWebPartMenu()
          _mnuSave = New MenuItem("Save Settings", "mnuSave", _
            New EventHandler(AddressOf _mnuSave_Click))
           Me.WebPartMenu.MenuItems.Add(_mnuSave)
      End Sub
 
      Private Sub _mnuSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)
         Try
             Me.SaveProperties = Not _chkSave.Checked
        Catch
             _msg &= "You must be signed in as a contributor to save properties. "
        End Try
      End Sub

The MenuItem constructor sets the displayed name, ID, and event handler for the menu item. In this case, the _mnuSave_Click event handler switches the SaveProperties setting for the web part on and off.

Menus don't save their state: they are redrawn from scratch each time the page is displayed. That's why a statement like _mnuSave.Checked = Not _mnuSave.Checked doesn't toggle the checkmark on a menu item. Instead you must use a web part property or a web control (such as the checkbox) to track the checked status of a menu item.

The CreateMenu and CreateChildControls methods are not called in a fixed order, so it's important to set web control properties in the OnPreRender event when working with web part menus. OnPreRender always occurs just before the web part is rendered. This code completes the Save Settings menu example by setting the control properties ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required