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

[Solved] How to intergrate RadGrid with RadContextMenu programmaticaly

2 Answers 127 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jerry Chen
Top achievements
Rank 1
Jerry Chen asked on 24 Feb 2010, 07:35 AM
Hello,
        I create a RadGrid programmaticaly with a RadContextMenu, however, it always popup script error. The code is below:
       
        1. Generate the RadContextMenu:
                    RadContextMenu RadMenu1 = new RadContextMenu(); 
                    RadMenu1.ID = "RadMenu1"
                    RadMenuItem viewItem = new RadMenuItem("View", "#"); 
                    RadMenu1.Items.Add(viewItem); 
                    RadMenuItem editItem = new RadMenuItem("Edit", "#"); 
                    RadMenu1.Items.Add(editItem); 
                    RadMenuItem deleteItem = new RadMenuItem("Delete", "#"); 
                    RadMenu1.Items.Add(deleteItem); 
                    this.Controls.Add(RadMenu1); 
          2. Bind to RadGrid:
grid.ClientSettings.ClientEvents.OnRowContextMenu = "RowContextMenu"
          3. Register the script:
                   string script = @"<script type='text/javascript'
                                        function RowContextMenu(sender, eventArgs)   
                                        {   
                                            var menu = $find('<%=RadMenu1.ClientID %>'); 
                                            var evt = eventArgs.get_domEvent(); 
                                            menu.show(evt); 
                 
                                            evt.cancelBubble = true
                                            evt.returnValue = false
 
                                            if (evt.stopPropagation) 
                                            { 
                                               evt.stopPropagation(); 
                                               evt.preventDefault(); 
                                            } 
                                    </script>"; 
 
                    if (!this.Page.ClientScript.IsStartupScriptRegistered(typeof(String), "RowDblClick")) 
                    {                         
                        this.Page.ClientScript.RegisterStartupScript(typeof(String), "RowDblClick", script);                         
                    } 
How to add a RadContextMenu for dataitem? When users click a menu item, RadMenu1_ItemClick will be fired, how to get the column data as I need to set the navigationUrl for menu item?

TIA
BR
Jerry

2 Answers, 1 is accepted

Sort by
0
Jerry Chen
Top achievements
Rank 1
answered on 25 Feb 2010, 01:42 AM
The exception throw out and says that menu is null? It seems var menu = $find('<%=RadMenu1.ClientID %>'); do not take affect.

Could someone give me some suggestion how to solve the issue above? Thank you!
0
Radoslav
Telerik team
answered on 26 Feb 2010, 07:36 AM
Hello Jerry,

Please try the following:

protected override void OnPreRenderComplete(EventArgs e)
{
      RadContextMenu menu = RadGrid1.HeaderContextMenu;
      RadMenuItem item = new RadMenuItem();
      item.Text = "Telerik Web site";
      item.NavigateUrl = "http://www.telerik.com/";
      menu.Items.Add(item);
      base.OnPreRenderComplete(e);
}

Also you could remove existing items from the context menu with the following code snippet:

protected void Page_Load(object o, EventArgs e)
{
        RadGrid1.HeaderContextMenu.ItemCreated += new RadMenuEventHandler(HeaderContextMenu_ItemCreated);
}
 
void HeaderContextMenu_ItemCreated(object sender, RadMenuEventArgs e)
{
        switch (e.Item.Text)
        {
            case "Group By": e.Item.Visible = false; break;
            case "Ungroup": e.Item.Enabled = false; break;
        }
}

I hope this helps.

Greetings,
Radoslav
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Tags
Grid
Asked by
Jerry Chen
Top achievements
Rank 1
Answers by
Jerry Chen
Top achievements
Rank 1
Radoslav
Telerik team
Share this question
or