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

right click hyperlink, no browser menu

3 Answers 108 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Christian
Top achievements
Rank 1
Christian asked on 25 Mar 2011, 07:07 AM
Ajax 2010.3.1317.35

I have a radgrid with some hyperlink columns, and a contextmenu atteched. is there any way to keep the browser menu when right clicking on hyperlinks, keeping the contextmenu on "other" row right click renderings?

here“s my grid code if its to any help.

<telerik:RadGrid ID="grCaseList" runat="server" Skin="Windows7" 
    AllowPaging="True" AllowSorting="True" GridLines="None" ShowGroupPanel="True" 
        Width="100%" AutoGenerateColumns="False" 
        onitemdatabound="grCaseList_ItemDataBound">
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Windows7"></HeaderContextMenu>
  
    <MasterTableView EnableColumnsViewState="true" GroupsDefaultExpanded="false" GroupLoadMode="Client" >
      
        <CommandItemSettings ExportToPdfText="Export to Pdf" >
        </CommandItemSettings>
        <RowIndicatorColumn>
            <HeaderStyle Width="20px"></HeaderStyle>
        </RowIndicatorColumn>
        <ExpandCollapseColumn>
            <HeaderStyle Width="20px"></HeaderStyle>
        </ExpandCollapseColumn>
        <Columns>
            <telerik:GridHyperLinkColumn DataTextField="cs_id" DataType="System.Int32" 
                FilterControlAltText="Filter cs_id column" HeaderText="ID" 
                UniqueName="cs_id" DataNavigateUrlFields="caseUrl" Groupable="False">
            </telerik:GridHyperLinkColumn>
            <telerik:GridHyperLinkColumn DataTextField="cs_header" 
                FilterControlAltText="Filter cs_header column" HeaderText="Rubrik" 
                UniqueName="cs_header" DataNavigateUrlFields="caseUrl" Groupable="False">
            </telerik:GridHyperLinkColumn>
            <telerik:GridHyperLinkColumn DataTextField="nt_us_name" 
                FilterControlAltText="Filter nt_us_name column" HeaderText="Senast Ƥndrad av" 
                UniqueName="nt_us_name">
            </telerik:GridHyperLinkColumn>
            <telerik:GridDateTimeColumn DataField="cs_timePosted" 
                FilterControlAltText="Filter cs_timePosted column" HeaderText="Inlagt" 
                UniqueName="cs_timePosted" DataFormatString="{0:yy-MM-dd hh:mm}">
            </telerik:GridDateTimeColumn>
            <telerik:GridDateTimeColumn DataField="cs_timePlanned" 
                DataType="System.DateTime" FilterControlAltText="Filter cs_timePlanned column" 
                HeaderText="Planerat" UniqueName="cs_timePlanned" DataFormatString="{0:yy-MM-dd}">
            </telerik:GridDateTimeColumn>
            <telerik:GridDateTimeColumn DataField="cs_timeClosed" 
                FilterControlAltText="Filter cs_timeClosed column" HeaderText="Avslutat" 
                UniqueName="cs_timeClosed" DataFormatString="{0:yy-MM-dd hh:mm}">
            </telerik:GridDateTimeColumn>
            <telerik:GridBoundColumn DataField="cs_fromIP" 
                FilterControlAltText="Filter cs_fromIP column" HeaderText="IP" 
                UniqueName="cs_fromIP">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="cs_fritext" 
                FilterControlAltText="Filter cs_fritext column" HeaderText="Fritext" 
                UniqueName="cs_fritext">
            </telerik:GridBoundColumn>
            <telerik:GridHyperLinkColumn DataTextField="cs_fromComputerName" 
                FilterControlAltText="Filter cs_fromComputerName column" HeaderText="Dator" 
                UniqueName="cs_fromComputerName">
            </telerik:GridHyperLinkColumn>
            <telerik:GridBoundColumn DataField="st_name" 
                FilterControlAltText="Filter st_name column" HeaderText="Status" 
                UniqueName="st_name">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="ty_name" 
                FilterControlAltText="Filter ty_name column" HeaderText="Typ" 
                UniqueName="ty_name">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="prio" 
                FilterControlAltText="Filter prio column" HeaderText="Prio" UniqueName="prio">
            </telerik:GridBoundColumn>
            <telerik:GridDateTimeColumn DataField="nt_timePosted" 
                FilterControlAltText="Filter nt_timePosted column" HeaderText="Uppdaterad" 
                UniqueName="nt_timePosted" DataFormatString="{0:yy-MM-dd hh:mm}">
            </telerik:GridDateTimeColumn>
            <telerik:GridHyperLinkColumn DataTextField="cs_us_name" 
                FilterControlAltText="Filter cs_us_name column" HeaderText="Inlagt av" 
                UniqueName="cs_us_name">
            </telerik:GridHyperLinkColumn>
            <telerik:GridHyperLinkColumn DataTextField="adm_ad_username" 
                FilterControlAltText="Filter adm_ad_username column" HeaderText="Ansvarig" 
                UniqueName="adm_ad_username">
            </telerik:GridHyperLinkColumn>
            <telerik:GridBoundColumn DataField="maxRead" 
                FilterControlAltText="Filter maxRead column" HeaderText="maxRead" 
                UniqueName="maxRead" Visible="False">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="maxNote" 
                FilterControlAltText="Filter maxNote column" HeaderText="maxNote" 
                UniqueName="maxNote" Visible="False">
            </telerik:GridBoundColumn>
        </Columns>
  
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
  
    </MasterTableView>
    <ClientSettings AllowDragToGroup="True">
        <Resizing AllowColumnResize="True"></Resizing>
        <ClientEvents OnRowContextMenu="RowContextMenu"></ClientEvents>
    <Selecting AllowRowSelect="true" />
  
    </ClientSettings>
  
<FilterMenu EnableImageSprites="False"></FilterMenu>
</telerik:RadGrid>
  
    <input type="hidden" id="radGridClickedRowIndex" name="radGridClickedRowIndex" />
  
    <telerik:RadContextMenu ID="RadMenu1" runat="server" OnItemClick="RadMenu1_ItemClick"
        EnableRoundedCorners="true" EnableShadows="true" Skin="Windows7">
        <Items>
            <telerik:RadMenuItem Text="Ɩppna Ƥrende" />
            <telerik:RadMenuItem Text="Avsluta Ƥrende" />
            <telerik:RadMenuItem Text="Ta bort Ƥrende" />
        </Items>
    </telerik:RadContextMenu>

3 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 25 Mar 2011, 10:00 AM
Hello Christian,

You can cancel the RowContextMenu based on the column (if its HyperLinkColumn). Sample code is given below.
Java Script:
<script type="text/javascript">
    function RowContextMenu(sender, eventArgs) {
        var menu = $find("<%=RadMenu1.ClientID %>");
        var evt = eventArgs.get_domEvent();
        var index = eventArgs.get_itemIndexHierarchical();
        var masterTable = sender.get_masterTableView();
        var cellIndex = evt.target.cellIndex;
        var column = masterTable.get_columns()[cellIndex];
        var uniqueName = column.get_uniqueName();
       if (uniqueName == "cs_id") {
            eventArgs.set_cancel(true);
        }
        else {
            if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") {
                return;
            }
 
            document.getElementById("radGridClickedRowIndex").value = index;
 
            sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
 
            menu.show(evt);
 
            evt.cancelBubble = true;
            evt.returnValue = false;
 
            if (evt.stopPropagation) {
                evt.stopPropagation();
                evt.preventDefault();
            }
        }
    }
</script>

Thanks,
Princy.
0
Christian
Top achievements
Rank 1
answered on 25 Mar 2011, 10:33 AM

almost, the evt.target.cellIndex is returned undefined.

this means that i get a script error where column.get_uniqueName is being run, but the script is canceled and i see the browser menu (IE9).


function RowContextMenu(sender, eventArgs)
{
    var menu = $find("ctl00_phContent_RadMenu1");
    var evt = eventArgs.get_domEvent();
    var index = eventArgs.get_itemIndexHierarchical();
    var masterTable = sender.get_masterTableView();
    var cellIndex = evt.target.cellIndex;
    var column = masterTable.get_columns()[cellIndex];
    var uniqueName = column.get_uniqueName();
     
    if(uniqueName == "cs_id"
    {
        eventArgs.set_cancel(true);
    }
    if(uniqueName == "cs_header"
    {
        eventArgs.set_cancel(true);
    }
  
    if(evt.target.tagName == "INPUT" || evt.target.tagName == "A"
    
      return;
    
      
    var index = eventArgs.get_itemIndexHierarchical();
    document.getElementById("radGridClickedRowIndex").value = index;
      
    sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
      
    menu.show(evt);
      
    evt.cancelBubble = true;
    evt.returnValue = false;
  
    if (evt.stopPropagation)
    {
       evt.stopPropagation();
       evt.preventDefault();
    }
}
0
Tsvetina
Telerik team
answered on 31 Mar 2011, 08:16 AM
Hi Christian,

If the issue persists, I would advise you to put your code into a sample runnable project and send it in a formal support ticket, so we can debug it locally and see what causes the javascript error.

Regards,
Tsvetina
the Telerik team
Tags
Grid
Asked by
Christian
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Christian
Top achievements
Rank 1
Tsvetina
Telerik team
Share this question
or