Hi
I am also having the same problem but the scenario is quite different. I am dynamically attaching ContextMenus with the tree nodes based on different values. These context menus are getting their IDs in the form of random number which is being generated inside the loop in order to differentiate the context menu of one node with the other.
Everything works fine except on iPad. So this solution doesn't work with my scenario. Could you please help me out in sorting out this one?
<
telerik:RadTreeView
ID
=
"tvCompletedCourses"
runat
=
"server"
AllowNodeEditing
=
"false"
oncontextmenuitemclick
=
"tvCompletedCourses_ContextMenuItemClick"
>
<
ContextMenus
>
<
telerik:RadTreeViewContextMenu
ID
=
"completedContextMenu"
runat
=
"server"
>
<
Items
>
<
telerik:RadMenuItem
Value
=
"Enter"
Text
=
"Enter"
>
</
telerik:RadMenuItem
>
<
telerik:RadMenuItem
Value
=
"Print"
Text
=
"Print Certificate"
>
</
telerik:RadMenuItem
>
</
Items
>
<
CollapseAnimation
Type
=
"none"
/>
</
telerik:RadTreeViewContextMenu
>
</
ContextMenus
>
</
telerik:RadTreeView
>
tvCompletedCourses.ContextMenus[0].Visible = false; //disable the already existing contectmenu
DataRow[] foundRows = dsCompletedCoursesByApprovedBodies.Tables[0].Select("CourseID ='" + theRow["CourseID"].ToString() + "'");
RadTreeViewContextMenu ctxMenu;
RadMenuItem menuItem;
RadMenuItem menuItem1;
int rValue;
if (foundRows.Length > 0)
{
for (int i = 0; i < foundRows.Length; i++)
{
//this field is being used to make a decision if that course has a valid certificate to print
if (foundRows[i]["IsValidCertificate"].ToString() != "0")
{
ctxMenu = new RadTreeViewContextMenu();
rValue = Next();
//ctxMenu.ID = "completedContextMenu" + ctr.ToString();
ctxMenu.ID = "completedContextMenu" + rValue.ToString();
menuItem = new RadMenuItem();
menuItem.Text = "Enter";
menuItem.Value = "Enter";
ctxMenu.Items.Add((menuItem));
menuItem = new RadMenuItem();
menuItem.Text = "Print";
menuItem.Value = "Print";
ctxMenu.Items.Add((menuItem));
tvCompletedCourses.ContextMenus.Add(ctxMenu);
courseNode.ContextMenuID = ctxMenu.ID;
}
else
{
//do not show the print option
ctxMenu = new RadTreeViewContextMenu();
rValue = Next(); //function to pick up the random value
ctxMenu.ID = "completedContextMenu" + rValue.ToString();
menuItem = new RadMenuItem();
menuItem.Text = "Enter";
menuItem.Value = "Enter";
ctxMenu.Items.Add((menuItem));
tvCompletedCourses.ContextMenus.Add(ctxMenu);
courseNode.ContextMenuID = ctxMenu.ID;
}
}
ctr++;
}
protected void tvCompletedCourses_ContextMenuItemClick(object sender, RadTreeViewContextMenuEventArgs e) {
string nodeValue = e.Node.Value;
string nodeID = String.Empty;
if (nodeValue.StartsWith("CO_"))
nodeID = nodeValue.Substring(3);
else if (nodeValue.StartsWith("C_"))
nodeID = nodeValue.Substring(2);
else
nodeID = nodeValue;
int courseID = Convert.ToInt32(nodeID);
switch (e.MenuItem.Value) {
case "Enter":
enrollCourses(courseID);
break;
case "Print":
Member theMember = new Member(currentIdentity.MemberID);
int enrolmentID = theMember.IsEnrolledInCourse(courseID);
Response.Redirect(String.Format("~/printcert.aspx?EnrolmentID={0}", enrolmentID));
break;
}
}