Hi,
I have a couple of treeviews embedded in a radpanel as shown below. I am trying to catch the OnClientNodeClicked event in javascript, however when I add the OnClientNodeClicked="DoOnClientNodeClick
to the treeview definition I find that my server side event handler no longer gets called.
Ultimately, what I am trying to do is have the control expand or collapse regarless of whether the click on the plus/minus sign or on the text of the node.
Any guidance would be greatly appreciated.
Thanks ... Ed
Here is the javascript I am using:
On the server side I have the following code
I have a couple of treeviews embedded in a radpanel as shown below. I am trying to catch the OnClientNodeClicked event in javascript, however when I add the OnClientNodeClicked="DoOnClientNodeClick
to the treeview definition I find that my server side event handler no longer gets called.
Ultimately, what I am trying to do is have the control expand or collapse regarless of whether the click on the plus/minus sign or on the text of the node.
Any guidance would be greatly appreciated.
Thanks ... Ed
Here is the javascript I am using:
| function DoOnClientNodeClick(sender, eventArgs) |
| { |
| var node = eventArgs.get_node(); |
| node.toggle(); |
| CollapseOthers(node); |
| return true; |
| } |
| function DoOnClientNodeExpanded(sender, eventArgs) |
| { |
| eventArgs.get_node().select(); |
| CollapseOthers(eventArgs.get_node()); |
| return true; |
| } |
| function CollapseOthers(node) |
| { |
| // if they are expanding a node then close all other root nodes |
| if (node.get_expanded()) |
| { |
| var tv = node.get_treeView(); |
| var nodeRoot; |
| var nCnt = 0; |
| // find the root node of the clicked on node |
| while (1) |
| { |
| if (node.get_parent() == tv) |
| { |
| nodenodeRoot = node; |
| break; |
| } |
| else |
| nodenode = node.get_parent(); |
| // a just in case check for a runaway loop |
| if (nCnt++ > 250) |
| return; |
| } |
| var i; |
| // collapse all other roots |
| for (i = 0; i < tv.get_nodes().get_count(); i++) |
| { |
| if (tv.get_nodes().getNode(i) != nodeRoot) |
| { |
| tv.get_nodes().getNode(i).set_expanded(false); |
| } |
| } |
| } |
| } |
On the server side I have the following code
| Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init |
| Dim tv As RadTreeView = rpiAccounts.FindControl("rtvAccount") |
| AddHandler tv.NodeExpand, AddressOf tvAccounts_NodeExpand |
| AddHandler tv.ContextMenuItemClick, AddressOf rtvAccount_ContextMenuItemClick |
| AddHandler tv.NodeClick, AddressOf rtvAccount_NodeClick |
| AddHandler tv.NodeDrop, AddressOf rtvAccount_NodeDrop |
| tv = rpiLevels.FindControl("rtvLevel") |
| AddHandler tv.NodeClick, AddressOf rtvLevel_NodeClick |
| End Sub |
| <telerik:RadPanelBar ID="RadPanelBar1" runat="server" Skin="Vista" ExpandMode="SingleExpandedItem" Width="402px" > |
| <CollapseAnimation Duration="100" Type="None" /> |
| <Items> |
| <telerik:RadPanelItem id="rpiAccounts" runat="server" Text="Accounts"> |
| <ItemTemplate> |
| <telerik:RadTreeView ID="rtvAccount" runat="server" EnableDragAndDrop="true" |
| EnableDragAndDropBetweenNodes="true" Skin="Vista" CausesValidation="false" |
| OnClientNodeClicked="DoOnClientNodeClick" OnClientNodeExpanded
="DoOnClientNodeExpanded" > |
| <CollapseAnimation Duration="100" Type="OutQuint" /> |
| <ExpandAnimation Duration="100"/> |
| </telerik:RadTreeView> |
| </ItemTemplate> |
| </telerik:RadPanelItem> |
| <telerik:RadPanelItem id="rpiLevels" runat="server" Text="Levels"> |
| <ItemTemplate> |
| <telerik:RadTreeView ID="rtvLevel" runat="server" Skin="Vista" CausesValidation="false" OnClientNodeClicked="DoOnClientNodeClick" OnClientNodeExpanded
="DoOnClientNodeExpanded" > |
| <CollapseAnimation Duration="100" Type="OutQuint" /> |
| <ExpandAnimation Duration="100" /> |
| </telerik:RadTreeView> |
| </ItemTemplate> |
| </telerik:RadPanelItem> |
| </Items> |
| <ExpandAnimation Duration="100" Type="None" /> |
| </telerik:RadPanelBar> |