9 Answers, 1 is accepted
0
                                Accepted

                                                    Richard Slade
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 22 Feb 2011, 03:31 PM
                                            
                                        Hi Deepak, 
Hope you're well. You need to subscribe to the ContextMenuOpening event, and then you can inspect what you need to go about cancelling the event. For exmaple: If you have a column called Id, and you want to stop the context menu for Id 2 then...
Hope that helps
Richard
                                        Hope you're well. You need to subscribe to the ContextMenuOpening event, and then you can inspect what you need to go about cancelling the event. For exmaple: If you have a column called Id, and you want to stop the context menu for Id 2 then...
private void radGridView1_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e) {     if (this.radGridView1.CurrentRow.Index > -1) // if it's a data row     {          if (this.radGridView1.CurrentColumn.Name == "Id") // and the column name is...         {             if (Convert.ToInt32(this.radGridView1.CurrentCell.Value) == 2)             {                 e.Cancel = true;             }         }                 } }Hope that helps
Richard
0
                                
                                                    Deepak
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 22 Feb 2011, 05:10 PM
                                            
                                        Hi Richard,
e.cancel does not seem to work. I still get the context menu popping up with e.cancel set to true.
Thanks
Deepak
                                        e.cancel does not seem to work. I still get the context menu popping up with e.cancel set to true.
Thanks
Deepak
0
                                
                                                    Richard Slade
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 22 Feb 2011, 05:15 PM
                                            
                                        Hi Deepak, 
Couple of quick questions.
Are you using the latest version? Not that this should make much difference I don't think with this event.
Are you sure that the event is being hit? I.e Have you added
Are you sure the condition in the event is being hit?
Thanks
Richard
                                        Couple of quick questions.
Are you using the latest version? Not that this should make much difference I don't think with this event.
Are you sure that the event is being hit? I.e Have you added
this.radGridView1.ContextMenuOpening += new Telerik.WinControls.UI.ContextMenuOpeningEventHandler(this.radGridView1_ContextMenuOpening);Are you sure the condition in the event is being hit?
Thanks
Richard
0
                                
                                                    Deepak
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 22 Feb 2011, 05:19 PM
                                            
                                        yes it does hit it. I must be doing something silly for it not to obey e.cancel = true
                                        0
                                
                                                    Richard Slade
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 22 Feb 2011, 05:32 PM
                                            
                                        Hi Deepak, 
Here is a really basic exmaple to try. It should show you a context menu on A1/B1 but not on A2/B2
Let me know if that works for you
Richard
Designer File
Form1.cs
 
Richard
                                        Here is a really basic exmaple to try. It should show you a context menu on A1/B1 but not on A2/B2
Let me know if that works for you
Richard
Designer File
partial class Form1 {     /// <summary>     /// Required designer variable.     /// </summary>     private System.ComponentModel.IContainer components;     /// <summary>     /// Clean up any resources being used.     /// </summary>     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>     protected override void Dispose(bool disposing)     {         if (disposing && (components != null))         {             components.Dispose();         }         base.Dispose(disposing);     }     #region Windows Form Designer generated code     /// <summary>     /// Required method for Designer support - do not modify     /// the contents of this method with the code editor.     /// </summary>     private void InitializeComponent()     {         this.radGridView1 = new Telerik.WinControls.UI.RadGridView();         ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).BeginInit();         this.SuspendLayout();         //          // radGridView1         //          this.radGridView1.Dock = System.Windows.Forms.DockStyle.Fill;         this.radGridView1.Location = new System.Drawing.Point(0, 0);         this.radGridView1.Name = "radGridView1";         this.radGridView1.Size = new System.Drawing.Size(284, 262);         this.radGridView1.TabIndex = 0;         this.radGridView1.Text = "radGridView1";         this.radGridView1.ContextMenuOpening += new Telerik.WinControls.UI.ContextMenuOpeningEventHandler(this.radGridView1_ContextMenuOpening);         //          // Form1         //          this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;         this.ClientSize = new System.Drawing.Size(284, 262);         this.Controls.Add(this.radGridView1);         this.Name = "Form1";         this.Text = "Form1";         this.Load += new System.EventHandler(this.Form1_Load);         ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).EndInit();         this.ResumeLayout(false);     }     #endregion     private Telerik.WinControls.UI.RadGridView radGridView1; } Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Telerik.WinControls.UI;         public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }           private void Form1_Load(object sender, EventArgs e)         {             this.radGridView1.Columns.Add(new GridViewTextBoxColumn("A"));             this.radGridView1.Columns.Add(new GridViewTextBoxColumn("B"));             this.radGridView1.Rows.Add("A1", "B1");             this.radGridView1.Rows.Add("A2", "B2");         }           private void radGridView1_ContextMenuOpening(object sender, Telerik.WinControls.UI.ContextMenuOpeningEventArgs e)         {             if (this.radGridView1.CurrentRow.Index > -1)             {                 if (this.radGridView1.CurrentRow.Cells["A"].Value.ToString() == "A2")                 {                     e.Cancel = true;                 }             }         }     } Richard
0
                                
                                                    Richard Slade
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 22 Feb 2011, 05:38 PM
                                            
                                        Note, you could also use 
Richard
                                        e.ContextMenu.Items.Clear();Richard
0
                                
                                                    Deepak
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 22 Feb 2011, 05:45 PM
                                            
                                        Your code works. However I have added custom menu items and they do not get cancelled in the event
                                        
private
void Form1_Load(object sender, EventArgs e)
{
this.radGridView1.Columns.Add(new GridViewTextBoxColumn("A"));
this.radGridView1.Columns.Add(new GridViewTextBoxColumn("B"));
this.radGridView1.Rows.Add("A1", "B1");
this.radGridView1.Rows.Add("A2", "B2");
this.radGridView1.ContextMenu = new ContextMenu();
this.radGridView1.ContextMenu.MenuItems.Add("custom");
}
0
                                
                                                    Deepak
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 22 Feb 2011, 06:06 PM
                                            
                                        Hi Richard,
I have got around it by using the Popup event of the context menu object. Here depending on the cell, I am either clearing or adding items to the context menu
Thanks
Deepak
                                        I have got around it by using the Popup event of the context menu object. Here depending on the cell, I am either clearing or adding items to the context menu
Thanks
Deepak
0
                                Accepted

                                                    Richard Slade
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 22 Feb 2011, 06:09 PM
                                            
                                        Hi Deepak, 
The reason for this is that the context menu you have added is a Windows Context Menu. The e.ContextMenu that we are handling is a RadDropDownMenu.
My advice would be to drop the windows context menu and create the menu item dynamically in the ContextMenuOpening event.
Here is a revised sample
Hope that helps
Richard
                                        The reason for this is that the context menu you have added is a Windows Context Menu. The e.ContextMenu that we are handling is a RadDropDownMenu.
My advice would be to drop the windows context menu and create the menu item dynamically in the ContextMenuOpening event.
Here is a revised sample
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Telerik.WinControls.UI;         public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }           private void Form1_Load(object sender, EventArgs e)         {             this.radGridView1.AllowCellContextMenu = true;               this.radGridView1.Columns.Add(new GridViewTextBoxColumn("A"));             this.radGridView1.Columns.Add(new GridViewTextBoxColumn("B"));             this.radGridView1.Rows.Add("A1", "B1");             this.radGridView1.Rows.Add("A2", "B2");             }             private void radGridView1_ContextMenuOpening(object sender, Telerik.WinControls.UI.ContextMenuOpeningEventArgs e)         {             if (this.radGridView1.CurrentRow.Index > -1)             {                 if (this.radGridView1.CurrentRow.Cells["A"].Value.ToString() == "A2")                 {                     e.Cancel = true;                 }                 else                {                     e.ContextMenu.Items.Clear(); // clears the default items                     e.ContextMenu.Items.Add(new RadMenuItem("Custom"));                 }             }         }       } Hope that helps
Richard