Hi pls. see the sample code. Note: This issue happens only if we use client side binding.
TreeInHttpPanel.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TreeInHttpPanel.aspx.cs"
Inherits="RadTestApp.TreeInHttpPanel" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!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>
<script type="text/javascript">
function onClientContextMenuItemClicking(sender, args) {
var menuItem = args.get_menuItem();
menuItem.get_menu().hide();
alert(menuItem.get_value() + " Clicked");
}
function onClientContextMenuShowing(sender, args) {
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager" runat="server" />
<script type="text/javascript">
function BindTree() {
var panel = $find("<%= RadXmlHttpPanel1.ClientID %>");
panel.set_value('data');
}
</script>
<telerik:RadXmlHttpPanel ID="RadXmlHttpPanel1" runat="server" OnServiceRequest="XmlHttpPanel_ServiceRequest"
EnableClientScriptEvaluation="true" RenderMode="Block">
<telerik:RadTreeView ID="radTreeView" runat="server" EnableViewState="false" OnClientContextMenuItemClicking="onClientContextMenuItemClicking"
OnClientContextMenuShowing="onClientContextMenuShowing" OnNodeDataBound="radTreeView_NodeDataBound"
Height="99%">
<ContextMenus>
<telerik:RadTreeViewContextMenu ID="MainContextMenu" runat="server">
<Items>
<telerik:RadMenuItem Value="Cut" Text="Cut" AccessKey="X">
</telerik:RadMenuItem>
<telerik:RadMenuItem Value="Copy" Text="Copy" AccessKey="C">
</telerik:RadMenuItem>
<telerik:RadMenuItem Value="Paste" Text="Paste" AccessKey="V">
</telerik:RadMenuItem>
</Items>
<CollapseAnimation Type="none" />
</telerik:RadTreeViewContextMenu>
</ContextMenus>
<NodeTemplate>
<asp:CheckBox ID="NodeCheckBox" runat="server"></asp:CheckBox>
</NodeTemplate>
</telerik:RadTreeView>
</telerik:RadXmlHttpPanel>
<input id="Button1" type="button" value="Bind From Client" onclick="BindTree();" />
<asp:Button ID="btnBind" runat="server" Text="Bind From Server" OnClick="btnBind_Click" />
</div>
</form>
</body>
</html>
TreeInHttpPanel.aspx.cs
using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;
namespace RadTestApp
{
public partial class TreeInHttpPanel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void BindTree()
{
radTreeView.DataSource = GetData();
radTreeView.DataTextField = "Name";
radTreeView.DataFieldID = "Id";
radTreeView.DataFieldParentID = "ParentId";
radTreeView.DataValueField = "Id";
radTreeView.DataBind();
}
protected void radTreeView_NodeDataBound(object sender, RadTreeNodeEventArgs e)
{
DataSource dataItem = (DataSource)e.Node.DataItem;
HtmlAnchor link = new HtmlAnchor();
link.InnerText = dataItem.Name;
link.HRef = "javascript:void(0);";
e.Node.Controls.Add(link);
}
protected void btnBind_Click(object sender, EventArgs e)
{
BindTree();
}
protected void XmlHttpPanel_ServiceRequest(object sender, RadXmlHttpPanelEventArgs e)
{
BindTree();
}
private List<DataSource> GetData()
{
List<DataSource> dataSource = new List<DataSource>();
dataSource.Add(new DataSource { Id = 1, ParentId = 0, Name = "Item 1" });
dataSource.Add(new DataSource { Id = 2, ParentId = 1, Name = "Item 2" });
dataSource.Add(new DataSource { Id = 3, ParentId = 1, Name = "Item 3" });
dataSource.Add(new DataSource { Id = 4, ParentId = 2, Name = "Item 41" });
dataSource.Add(new DataSource { Id = 5, ParentId = 2, Name = "Item 5" });
dataSource.Add(new DataSource { Id = 6, ParentId = 5, Name = "Item 6" });
return dataSource;
}
}
class DataSource
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
}
}