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

method registered to OnContextMenuItemClick event has no effect

6 Answers 123 Views
TreeView
This is a migrated thread and some comments may be shown as answers.
Phil Hadley
Top achievements
Rank 1
Phil Hadley asked on 02 Oct 2009, 07:48 PM
In my ContextMenuItemClick event handler, I'm adding a new RadTreeNode to e.Node.Nodes, but the code has no effect.

Can you tell me why?

I have attached my small VS2008 project where the problem occurs.  I had to change the extension from .zip attachment to .jpg, so detach it and rename to .zip before extracting it.

Thanks.

6 Answers, 1 is accepted

Sort by
0
Phil Hadley
Top achievements
Rank 1
answered on 02 Oct 2009, 08:01 PM
I just got it working by commenting out the UpdatePanel in Default.aspx.  Is there any way around this?  I need that AsyncPostBackTrigger.  Here's the new Default.aspx:

<%@ Page Language="C#" AutoEventWireup="false"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>

<!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>Untitled Page</title>
    <link type="text/css" rel="Stylesheet" href="css/Portal.css" />
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div style="text-align:left;">
            <table class="portalMasterContent">
                <tr class="portalMasterContent">
                    <td class="siteManagementNavigation">
                        <asp:Panel ID="Panel1" runat="server" BackColor="#CCCCFF" ScrollBars="Both" Height="100%">
                            <telerik:RadTreeView ID="RadTreeView1" Runat="server" BackColor="#CCCCFF"
                                ForeColor="Black" AllowNodeEditing="True" CheckBoxes="True" Skin="Sunset"
                                EnableDragAndDrop="True" EnableDragAndDropBetweenNodes="True"
                                OnNodeDrop="RadTreeView1_NodeDrop" OnNodeEdit="RadTreeView1_NodeEdit" MultipleSelect="True"
                                OnContextMenuItemClick="RadTreeView1_ContextMenuItemClick" OnNodeClick="RadTreeView1_NodeClick" >
                            </telerik:RadTreeView>
                        </asp:Panel>
                    </td>
                    <td class="siteManagementContent" align="center" valign="middle" style="height: 100%">
<%--                        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
--%>                                <asp:PlaceHolder ID="phDetails" runat="server" />
<%--                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="RadTreeView1" EventName="NodeClick" />
                            </Triggers>
                        </asp:UpdatePanel>
--%>                    </td>
                </tr>
            </table>
        </div>
    </form>
</body>
</html>

0
Accepted
Atanas Korchev
Telerik team
answered on 06 Oct 2009, 08:39 AM
Hello Phil Hadley,

The treeview is not updated after ajax hence adding the node seems like it has no effect. Please add the treeview in the update panel so it is updated after ajax request.

Regards,
Albert,
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
Ez
Top achievements
Rank 1
answered on 09 Oct 2009, 03:36 PM
I have add the code in the update panel but it still does not work. The version is xxxxxxxxxxx.35.

I use VS 2008. Telerik tools are in the toolbox. I notice that OnContextMenuItemClick is not in the TreeView property.

Does that mean something?
0
Ez
Top achievements
Rank 1
answered on 09 Oct 2009, 03:37 PM

here is the code:

 

 

<asp:Panel ID="pnlTemplateSave" Wrap="false" style="background-color:White;" runat="server">

 

 

 

 

 

<asp:UpdatePanel ID="updpnlSave" runat="server" UpdateMode="Conditional" >

 

 

<ContentTemplate>

 

 

 

 

 

<table id="tblTemplateSave" cellpadding="5px" style="width:500px; border:solid 1px #B5B8C8; border-collapse:collapse;">

 

 

 

 

 

<tr>

 

 

 

 

 

<td class="windowHeader">

 

 

 

 

 

<span>Save Template</span>

 

 

</td>

 

 

</tr>

 

 

 

 

 

<tr>

 

 

 

 

 

<td>

 

 

 

 

 

<asp:RequiredFieldValidator ID="rfvSltdNode" ErrorMessage="Please select a folder." ControlToValidate="RadTreeView2"

 

 

ValidationGroup="RequiredGroup" runat="server"></asp:RequiredFieldValidator>

 

 

 

 

 

<telerik:RadTreeView ID="RadTreeView2" MultipleSelect="false" AllowNodeEditing="true"

 

 

runat="server" Height="300px"

 

 

 

 

 

OnClientContextMenuShowing="onClientContextMenuShowing"

 

 

 

 

 

OnClientContextMenuItemClicked="onClientContextMenuItemClick"

 

 

OnContextMenuItemClick="RadTreeView2_ContextMenuItemClick"

 

 

 

 

 

OnNodeExpand="RadTreeView2_NodeExpand"

 

 

 

 

 

OnNodeEdit="RadTreeView2_NodeEdit"

 

 

 

 

 

Skin="Vista"

 

 

 

>

 

 

 

 

 

</telerik:RadTreeView>

 

 

<%

-- BeforeClientContextMenu="ShowRadMenu"

 

 

<telerik:RadMenu ID="RadMenu1" runat="server" IsContext="True" Skin="Outlook" >

</telerik:RadMenu>

--

 

%>

 

 

<telerik:RadContextMenu ID="RootFolderContextMenu" runat="server" style="z-index:100000" >

 

 

 

 

 

<Items>

 

 

 

 

 

<telerik:RadMenuItem Value="New" Text="New Folder" ></telerik:RadMenuItem>

 

 

 

 

 

</Items>

 

 

</telerik:RadContextMenu>

 

 

 

 

 

<telerik:RadContextMenu ID="ChildFolderContextMenu" runat="server" style="z-index:100000" >

 

 

 

 

 

<Items>

 

 

 

 

 

<telerik:RadMenuItem Value="New" Text="New Folder" Enabled="true" ></telerik:RadMenuItem>

 

 

 

 

 

<telerik:RadMenuItem Value="Rename" Text="Rename Folder" PostBack="false"></telerik:RadMenuItem>

 

 

 

 

 

<telerik:RadMenuItem Value="Delete" Text="Delete Folder" ></telerik:RadMenuItem>

 

 

</Items>

 

 

</telerik:RadContextMenu>

 

 

 

 

 

<telerik:RadContextMenu ID="FileContextMenu" runat="server" style="z-index:100000" >

 

 

 

 

 

<Items>

 

 

 

 

 

</Items>

 

 

</telerik:RadContextMenu>

 

 

 

 

 

 

</td>

 

 

 

 

 

</tr>

 

 

 

<tr>

 

 

 

 

 

<td>

 

 

 

 

 

<asp:label ID="lblTemplateName" Text="Template Name:" runat="server"></asp:label> &nbsp;

 

 

 

 

 

<asp:TextBox ID="txtTemplateName" Width="300px" MaxLength="256" runat="server"></asp:TextBox>

 

 

 

 

 

<asp:RequiredFieldValidator ID="rfvTplName" ErrorMessage="Template Name is required." ControlToValidate="txtTemplateName"

 

 

ValidationGroup="RequiredGroup" runat="server"></asp:RequiredFieldValidator>

 

 

</td>

 

 

</tr>

 

 

 

 

 

 

 

<tr>

 

 

 

 

 

<td align="right">

 

 

 

 

 

<asp:Button ID="btnSave" UseSubmitBehavior="false" Text="Save" OnClick="SaveTemplate" runat="server" ValidationGroup="RequiredGroup" />

 

 

 

 

 

<asp:Button ID="btnCancel" UseSubmitBehavior="false" Text="Cancel" OnClick="CancelTemplate" runat="server" />

 

 

 

 

 

</td>

 

 

 

 

 

</tr>

 

 

 

 

 

</table>

 

 

 

 

 

 

<ajaxToolkit:ModalPopupExtender ID="mpeTemplateSave" runat="server"

 

 

 

 

 

TargetControlID="btnSave"

 

 

 

 

 

BehaviorID="mpeTemplateSaveBhvr"

 

 

 

 

 

PopupControlID="pnlTemplateSave"

 

 

PopupDragHandleControlID="tblTemplateSave"

 

 

CancelControlID="btnCancel"

 

 

BackgroundCssClass="ext-el-mask" />

 

 

 

 

 

</ContentTemplate>

 

 

 

 

 

</asp:UpdatePanel>

 

 

 

 

 

</asp:Panel>

 

0
Phil Hadley
Top achievements
Rank 1
answered on 13 Oct 2009, 01:10 PM
Chris,

Per the advice of support, I added the entire treeview to the update panel, and it worked for me.

Not sure what you mean about OnContextMenuItemClick.  I'm using it in my example.

Phil
0
Ez
Top achievements
Rank 1
answered on 13 Oct 2009, 06:27 PM
I did  a test. The TreeView control works in the page. However, it does not work in the Popup. What confuses me is that the node expand and collapse works for TreeView even in the popup, but does not work in the popup. The context menu does not work in the popup.

To understand more about this, I added the alert() in the onClientContextMenuShowing to show the property values. First, I get the menu object:

treeNode.get_contextMenu()


It shows that enable state is "undefined" and visible is false. (it displays correctly if NOT in popup).
So I add these two lines:

 

 

menu.set_enabled();

menu.show(evt);

It still does not work.

What I don't understand is that same code works in the non-popup scenario.

I need help.

Here is the code

<asp:ScriptManager ID="sm" EnablePageMethods="true" runat="server" ></asp:ScriptManager>
<telerik:RadEditor ID="htmlEditor" runat="server" OnClientLoad = "OnClientLoad"
         AllowScripts="True" Width="100%" Height="500" Skin="Vista" EditModes="Design,Html"  >
 <Tools>
                <telerik:EditorTool Name="btnSave" Text="Save" ShowIcon="false" showText="true" />
                <telerik:EditorSeparator Visible="true" />

  <telerik:EditorToolGroup>
   ..................
  </telerik:EditorToolGroup>
  </Tools>
</telerik:RadEditor>
 
<asp:Panel ID="pnlTemplateSave" Wrap="false" style="background-color:White;" runat="server">
<asp:UpdatePanel ID="updpnlSave" runat="server" UpdateMode="Conditional" >      
<ContentTemplate>
            <telerik:RadTreeView ID="RadTreeView2" MultipleSelect="false" AllowNodeEditing="true" runat="server" Height="300px"
                OnClientContextMenuShowing="onClientContextMenuShowing"
                OnClientContextMenuItemClicking="onClientContextMenuItemClicking"
                OnContextMenuItemClick="RadTreeView2_ContextMenuItemClick"
                OnNodeExpand="RadTreeView2_NodeExpand"
                OnNodeEdit="RadTreeView2_NodeEdit"
                Skin="Vista" >
                <ContextMenus>
                    <telerik:RadTreeViewContextMenu ID="RootFolderContextMenu" runat="server">
                        <Items>
                            <telerik:RadMenuItem Value="New" Text="New Folder" ></telerik:RadMenuItem>
                        </Items> 
                        <CollapseAnimation Type="none" />            
                    </telerik:RadTreeViewContextMenu>
                    <telerik:RadTreeViewContextMenu ID="ChildFolderContextMenu" runat="server">
                        <Items>
                            <telerik:RadMenuItem Value="New" Text="New Folder" ></telerik:RadMenuItem>
                            <telerik:RadMenuItem Value="Rename" Text="Rename Folder" PostBack="false"></telerik:RadMenuItem>
                            <telerik:RadMenuItem Value="Delete" Text="Delete Folder" ></telerik:RadMenuItem>          
                        </Items>           
                        <CollapseAnimation Type="none" />
                    </telerik:RadTreeViewContextMenu>
                    <telerik:RadTreeViewContextMenu ID="FileContextMenu" runat="server">
                        <Items>
                        </Items>           
                        <CollapseAnimation Type="none" />
                    </telerik:RadTreeViewContextMenu>
                </ContextMenus>
            </telerik:RadTreeView>          
            <ajaxToolkit:ModalPopupExtender ID="mpeTemplateSave" runat="server"
                                TargetControlID="btnSave"
                                BehaviorID="mpeTemplateSaveBhvr"
                                PopupControlID="pnlTemplateSave"
                                PopupDragHandleControlID="tblTemplateSave"                                                  
                                CancelControlID="btnCancel"                               
                                BackgroundCssClass="ext-el-mask" />

            </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>

<script type="text/javascript">

Telerik.Web.UI.Editor.CommandList["btnSave"] = function(commmandName, editor, args) {
                var mpe = $find('mpeTemplateSaveBhvr');
                if (mpe)
                    mpe.show();
            }

function onClientContextMenuShowing(sender, args) {
                var treeNode = args.get_node();
                var evt = args.get_domEvent();
                treeNode.set_selected(true);
                if (treeNode) {
                    var menu = treeNode.get_contextMenu();
                    if (menu) {
                        menu.set_enabled();
                        alert(menu.get_enabled());
                        menu.show(evt);
                        alert(menu.get_enabled() + "  " + menu.get_visible());
                    }

}
</script>

Tags
TreeView
Asked by
Phil Hadley
Top achievements
Rank 1
Answers by
Phil Hadley
Top achievements
Rank 1
Atanas Korchev
Telerik team
Ez
Top achievements
Rank 1
Share this question
or