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);
}