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

Context menu Problem

1 Answer 108 Views
Menu
This is a migrated thread and some comments may be shown as answers.
Denny
Top achievements
Rank 1
Denny asked on 25 Jun 2009, 05:37 PM

To All,
i am currently using Rad Context menu in The RAD Grid.

IN the Grid Depending upon the value i want to show some different text on the context menu.lets say in a grid we have a 3 different row.
1 for a Folder name "Master" inthat i want see "Delete" and "Rename" in the context menu
2 for a Folder name "Working" inthat i want see "Create folder in the context menu
3 for a file i want to see  "Properties" and "Download"

How can i do this?i am currently using ASP.NET 2008.

Thanks
Denny

1 Answer, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 26 Jun 2009, 06:00 AM
Hi Denny,

Try the following approach in order to show/hide radcontextmenu item based on rowindex value of grid. Here I tried hide() and show() methods of radmenu to display desired menu options.

ASPX:
 
<telerik:RadGrid ID="RadGrid1" AllowPaging="true" runat="server" DataSourceID="SqlDataSource1"
    <MasterTableView DataSourceID="SqlDataSource1" ClientDataKeyNames="CategoryName" AutoGenerateColumns="True"
        <Columns> 
        </Columns> 
    </MasterTableView> 
    <ClientSettings>         
        <ClientEvents OnRowContextMenu="OnRowContextMenu" /> 
    </ClientSettings> 
</telerik:RadGrid> 
 
<telerik:RadContextMenu ID="RadMenu1" runat="server"
    <Items> 
        <telerik:RadMenuItem Text="Delete" Value="Delete" /> 
        <telerik:RadMenuItem Text="Rename" Value="Rename" /> 
        <telerik:RadMenuItem Text="Create Folder" Value="Create Folder" /> 
        <telerik:RadMenuItem Text="Properties" Value="Properties" /> 
        <telerik:RadMenuItem Text="Download" Value="Download" /> 
    </Items> 
</telerik:RadContextMenu> 

JavaScript:
 
<script type="text/javascript"
function OnRowContextMenu(sender, eventArgs) 
    var menu = $find("<%=RadMenu1.ClientID %>"); 
    var evt = eventArgs.get_domEvent(); 
     
    if(evt.target.tagName == "INPUT" || evt.target.tagName == "A"
    { 
      return
    } 
    var DataItem = $find("<%=RadGrid1.ClientID %>").get_masterTableView().get_dataItems()[index]; 
    value = DataItem.getDataKeyValue("CategoryName"); // Set the ClientDataKeyNames as CategoryName 
    index = eventArgs.get_itemIndexHierarchical(); // index value 
    var all = menu.get_allItems(); 
    for(var i =0; i<all.length; i++) 
    { 
        all[i].hide();         
    } 
    if(index == 0) //Condition (Or check with the value for the cell value) 
    { 
        var item = menu.findItemByText("Delete"); 
        item.show(); 
        item = menu.findItemByText("Rename"); 
        item.show(); 
    } 
    if(index == 1) 
    { 
        var item = menu.findItemByText("Create Folder"); 
        item.show(); 
    } 
     
    if(index == 2) 
    { 
        var item = menu.findItemByText("Properties"); 
        item.show(); 
        item = menu.findItemByText("Download"); 
        item.show(); 
    } 
    menu.show(evt);     
    evt.cancelBubble = true
    evt.returnValue = false
    if (evt.stopPropagation) 
    { 
       evt.stopPropagation(); 
       evt.preventDefault(); 
    } 
</script> 

Thanks,
Shinu.
Tags
Menu
Asked by
Denny
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Share this question
or