I recently found the following example on your site demonstrating the handling of the grid RowContextMenu event and showing the menu. http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridandmenu/defaultcs.aspx?product=grid
This example included the RowContextMenu handler:
function GridRowContextMenuHandler(sender, eventArgs) { var menu = $find("<%= menuId.ClientId %>"); var evt = eventArgs.get_domEvent(); if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") { return; } var rowIndex = eventArgs.get_itemIndexHierarchical(); menu.show(evt); evt.cancelBubble = true; evt.returnValue = false; if (evt.stopPropagation) { evt.stopPropagation(); evt.preventDefault(); } }
I have some code which I have been using since way back in the Prometheus days and I'm trying to figure out if it is equivalent to what you show in your example. It seems this code is more concise. Is there any benefit or drawback to using what I have here?
function GridRowContextMenuHandler(sender, eventArgs) { var menu = $find("<%= menuId.ClientId %>"); if ((!eventArgs.relatedTarget) || (!Telerik.Web.DomUtility.isDescendantOrSelf(menu.get_element(), eventArgs.relatedTarget))) { menu.show(eventArgs) } $telerik.cancelRawEvent(eventArgs); }
<telerik:RadGrid ID="rgSchedule" runat="server" AutoGenerateColumns="False" CellSpacing="0" DataSourceID="sqlWebinarSchedule" GridLines="None" OnItemDataBound ="rgSchedule_ItemDataBound" ><MasterTableView DataSourceID="sqlWebinarSchedule"><CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings><RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn><ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="WeekRange" FilterControlAltText="Filter WeekRange column" ReadOnly="True" SortExpression="WeekRange" UniqueName="WeekRange"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="MondayDay" DataType="System.Int32" FilterControlAltText="Filter MondayDay column" HeaderText="Monday" SortExpression="MondayDay" UniqueName="Monday"> <ItemTemplate> <asp:Label ID="MondayDayLabel" runat="server" Text='<%# Eval("MondayDay") %>'></asp:Label> <asp:Label ID="MondayColor" runat="server" Text='<%# Eval("Monday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="TuesdayDay" DataType="System.Int32" FilterControlAltText="Filter TuesdayDay column" HeaderText="Tuesday" SortExpression="TuesdayDay" UniqueName="Tuesday"> <ItemTemplate> <asp:Label ID="TuesdayDayLabel" runat="server" Text='<%# Eval("TuesdayDay") %>'></asp:Label> <asp:Label ID="TuesdayColor" runat="server" Text='<%# Eval("Tuesday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="WednesdayDay" DataType="System.Int32" FilterControlAltText="Filter WednesdayDay column" HeaderText="Wednesday" SortExpression="WednesdayDay" UniqueName="Wednesday"> <ItemTemplate> <asp:Label ID="WednesdayDayLabel" runat="server" Text='<%# Eval("WednesdayDay") %>'></asp:Label> <asp:Label ID="WednesdayColor" runat="server" Text='<%# Eval("Wednesday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="ThursdayDay" DataType="System.Int32" FilterControlAltText="Filter ThursdayDay column" HeaderText="Thursday" SortExpression="ThursdayDay" UniqueName="Thursday"> <ItemTemplate> <asp:Label ID="ThursdayDayLabel" runat="server" Text='<%# Eval("ThursdayDay") %>'></asp:Label> <asp:Label ID="ThursdayColor" runat="server" Text='<%# Eval("Thursday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="FridayDay" DataType="System.Int32" FilterControlAltText="Filter FridayDay column" HeaderText="Friday" SortExpression="FridayDay" UniqueName="Friday"> <ItemTemplate> <asp:Label ID="FridayDayLabel" runat="server" Text='<%# Eval("FridayDay") %>'></asp:Label> <asp:Label ID="FridayColor" runat="server" Text='<%# Eval("Friday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="SaturdayDay" DataType="System.Int32" FilterControlAltText="Filter SaturdayDay column" HeaderText="Saturday" SortExpression="SaturdayDay" UniqueName="Saturday"> <ItemTemplate> <asp:Label ID="SaturdayDayLabel" runat="server" Text='<%# Eval("SaturdayDay") %>'></asp:Label> <asp:Label ID="SaturdayColor" runat="server" Text='<%# Eval("Saturday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="SundayDay" DataType="System.Int32" FilterControlAltText="Filter SundayDay column" HeaderText="Sunday" SortExpression="SundayDay" UniqueName="Sunday"> <ItemTemplate> <asp:Label ID="SundayDayLabel" runat="server" Text='<%# Eval("SundayDay") %>'></asp:Label> <asp:Label ID="SundayColor" runat="server" Text='<%# Eval("Sunday") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <GroupByExpressions> <telerik:GridGroupByExpression> <SelectFields> <telerik:GridGroupByField FieldAlias="MonthYear" FieldName="MonthYear" FormatString="" HeaderText="Month" /> </SelectFields> <GroupByFields> <telerik:GridGroupByField FieldAlias="MonthStart" FieldName="MonthStart" FormatString="" HeaderText="" /> </GroupByFields> </telerik:GridGroupByExpression> </GroupByExpressions><EditFormSettings><EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn></EditFormSettings></MasterTableView><FilterMenu EnableImageSprites="False"></FilterMenu> </telerik:RadGrid>protected void rgSchedule_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; foreach (Control ctrl in item.Controls) { if (ctrl is Label) { Label lbl = (Label)ctrl; switch (lbl.Text) { case "Red": item.BackColor = System.Drawing.Color.Red; break; case "White": item.BackColor = System.Drawing.Color.White; break; case "Green": item.BackColor = System.Drawing.Color.Green; break; } rgSchedule.Rebind(); } } } }<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <telerik:RadStyleSheetManager id="RadStyleSheetManager1" runat="server" /> <style type="text/css"> div.RadUpload .ruFakeInput { visibility: hidden; width: 0; padding: 0; } div.RadUpload .ruFileInput { width: 1; } </style> </head> <body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <%--Needed for JavaScript IntelliSense in VS2010--%> <%--For VS2008 replace RadScriptManager with ScriptManager--%> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </telerik:RadScriptManager> <script type="text/javascript"> var Nbre = 0; function getRadWindow() { var oWindow = null; if (window.radWindow) oWindow = window.radWindow; else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; return oWindow; } function CloseWindow() { var wnd = getRadWindow(); var openerPage = wnd.BrowserWindow; openerPage.Importer_Callback(); wnd.close(); } function validateRadUpload1(source, arguments) { arguments.IsValid = $find('RadUpload1').validateExtensions(); } function validateFailed(source, arguments) { } function fileSelected(source, arguments){ } function fileUploaded(sender, args) { document.forms[0].btnSubmit.style.display= 'inline'; } </script> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> </telerik:RadAjaxManager> <telerik:RadSkinManager ID="RadSkinManager1" Runat="server" Skin="Vista"> </telerik:RadSkinManager> <telerik:RadProgressManager runat="server" ID="RadProgressManager1" /> <div> <table> <tr> <td>Firstname:</td> <td> <asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox></td> </tr> <tr> <td>Surname:</td> <td> <asp:TextBox ID="tbSurname" runat="server"></asp:TextBox></td> </tr> <tr> <td>Act/DJ Name:</td> <td> <asp:TextBox ID="tbActName" runat="server"></asp:TextBox></td> </tr> </table> <telerik:RadAsyncUpload runat="server" Localization-Select="Upload" ID="AsyncUpload1" MaxFileSize="300000000" OnClientFileUploaded="fileUploaded" ReadOnlyFileInputs="true" InitialFileInputsCount="1" MaxFileInputsCount="1" ControlObjectsVisibility="None" OnClientFileSelected="fileSelected" OnClientValidationFailed="validateFailed" /> </div> <div><telerik:RadProgressArea runat="server" ID="RadProgressArea1" ProgressIndicators="TotalProgressBar,TotalProgressPercent,RequestSize,TimeElapsed,TimeEstimated,CurrentFileName,TotalProgress" /></div> <asp:Button ID="btnSubmit" runat="server" Text="Submit Demo" style="display:none" OnClick="buttonSubmit_Click"/> </form> </body> </html> namespace RSWSTest
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Session["TestSessionValue"] = "MyTestValue";
}
}
}
}
[WebMethod(EnableSession=true)]
public IEnumerable<ResourceData> GetResources(SchedulerInfo schedulerInfo)
{
object v = Session["TestSessionValue"]; //-- THIS RETURNS NULL
Session["WS_GetResourcesCalled"] = true; //-- THIS WORKS BUT NOT VISIBLE IN SUBSEQUENT CALLS
return Controller.GetResources(schedulerInfo);
}
[WebMethod(EnableSession=true)]
public IEnumerable<AppointmentData> GetAppointments(SchedulerInfo schedulerInfo)
{
object v = Session["TestSessionValue"]; //-- THIS RETURNS "MyTestValue"
Session["WS_GetAppointmentsCalled"] = true;
return Controller.GetAppointments(schedulerInfo);
}
