This is a migrated thread and some comments may be shown as answers.

[Solved] Adding custom HeaderContextMenuI item

3 Answers 175 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jocelyn
Top achievements
Rank 1
Jocelyn asked on 19 Dec 2012, 02:49 PM
Hi,

I am trying to add a custom HeaderContextMenu item and handle the ItemClick.

Here is my code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    GridCGSI_UpdateDefaults(RadGrid1)
 
    AddHandler RadGrid1.HeaderContextMenu.PreRender, AddressOf HeaderContextMenu_PreRender
    AddHandler RadGrid1.HeaderContextMenu.ItemClick, AddressOf HeaderContextMenu_ItemClick
End Sub
 
Protected Sub HeaderContextMenu_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim menu As RadContextMenu = RadGrid1.HeaderContextMenu
    Dim separator As New RadMenuItem()
    Dim item As New RadMenuItem()
 
    separator.IsSeparator = True
    menu.Items.Add(separator)
 
    item.Text = "Save settings"
    item.Value = "SaveSettings"
    item.PostBack = True
    menu.Items.Add(item)
End Sub
 
Protected Sub HeaderContextMenu_ItemClick(ByVal sender As Object, ByVal e As RadMenuEventArgs)
 
End Sub
 
Public Sub GridCGSI_UpdateDefaults(ByVal tmpGrid As RadGrid)
 
    tmpGrid.CellSpacing = "0"
    tmpGrid.AutoGenerateColumns = False
    tmpGrid.AllowPaging = True
    tmpGrid.PageSize = 40
    tmpGrid.AllowSorting = True
 
    tmpGrid.GridLines = GridLines.None
 
    tmpGrid.AllowFilteringByColumn = True
    tmpGrid.EnableHeaderContextMenu = True
    tmpGrid.ShowStatusBar = True
 
    tmpGrid.HeaderContextMenu.Enabled = True
    tmpGrid.MasterTableView.SortExpressions.AllowNaturalSort = False
    tmpGrid.AllowMultiRowEdit = False
 
End Sub

My problem is when I click on my custom item "Save settings" it shows me an asp error of a NullReferenceException:

[NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.]
   System.Web.UI.Control.FindControl(String id, Int32 pathOffset) +147
   System.Web.UI.Page.FindControl(String id) +38
   Telerik.Web.UI.RadGrid.headerContextMenu_ItemClick(Object sender, RadMenuEventArgs e) +242
   Telerik.Web.UI.RadMenuEventHandler.Invoke(Object sender, RadMenuEventArgs e) +0
   Telerik.Web.UI.RadMenu.RaiseMenuItemEvent(Object eventKey, RadMenuEventArgs e) +123
   Telerik.Web.UI.RadMenu.OnItemClick(RadMenuEventArgs e) +42
   Telerik.Web.UI.RadMenu.RaiseItemClick(ControlItem item) +102
   Telerik.Web.UI.RadMenu.RaisePostBackEvent(String nodeIndex) +73
   Telerik.Web.UI.RadMenu.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String nodeIndex) +39
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

Why this is happening?

Thanks.

3 Answers, 1 is accepted

Sort by
0
Florence
Top achievements
Rank 1
answered on 19 Dec 2012, 04:37 PM
Hi Jocelyn,

Have you tried adding the new menu item on PreRenderComplete event of the page and not in the PreRender event of the menu?
Protected Overloads Overrides Sub OnPreRenderComplete(ByVal e As EventArgs)
    Dim menu As RadContextMenu = RadGrid1.HeaderContextMenu
    Dim item As New RadMenuItem()
    'item settings
    menu.Items.Add(item)
    MyBase.OnPreRenderComplete(e)
End Sub
0
Jocelyn
Top achievements
Rank 1
answered on 25 Feb 2013, 07:46 PM
I still have the same error.

Is there a clean way to do this?
0
Jocelyn
Top achievements
Rank 1
answered on 27 Feb 2013, 02:00 PM
Hi I just tried to add this two lines in the PreRender event:

item.Attributes.Add("ColumnName", String.Empty)
item.Attributes.Add("TableID", String.Empty)

and the error is gone. But I would like to know why I need to add these two attributes.

Thanks!
Tags
Grid
Asked by
Jocelyn
Top achievements
Rank 1
Answers by
Florence
Top achievements
Rank 1
Jocelyn
Top achievements
Rank 1
Share this question
or