I have a RadTreeView on a form that is being populated by code with the node.add method described in your documentation. (http://www.telerik.com/help/aspnet-ajax/treeview-load-on-demand-client.html) It works great for loading the items, but when you click one or do anything that causes a PostBack, all the items disappear.
APSX
Code Behind
APSX
<%@ Page Title="" Language="C#" MasterPageFile="~/Content/themes/Level_One.Master" AutoEventWireup="true" CodeBehind="RequestManager.aspx.cs" Inherits="WebApplication.Forms.RequestManager" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ MasterType VirtualPath="~/Content/themes/Level_One.Master" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"head"
runat
=
"server"
>
<%: System.Web.Optimization.Styles.Render("~/Content/css") %>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"main_placeholder"
runat
=
"server"
>
<
telerik:RadCodeBlock
ID
=
"cb1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function mngRequestStarted(ajaxManager, eventArgs) {
// alert(eventArgs.get_eventTargetElement())
var newArr = new Array();
for (var name in ajaxManager) {
newArr.push(name + "<-->" + ajaxManager[name])
}
}
</
script
>
</
telerik:RadCodeBlock
>
<
telerik:RadScriptManager
ID
=
"main_radscriptmanager"
runat
=
"server"
EnableViewState
=
"true"
></
telerik:RadScriptManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"main_loading"
runat
=
"server"
Skin
=
"Metro"
EnableViewState
=
"true"
></
telerik:RadAjaxLoadingPanel
>
<
telerik:RadAjaxManager
ID
=
"main_ajaxmanager"
runat
=
"server"
EnableAJAX
=
"true"
EnableViewState
=
"true"
ClientEvents-OnRequestStart
=
"mngRequestStarted"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"tvRequestList"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"tvRequestList"
LoadingPanelID
=
"main_loading"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"main_windowmanager"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"main_windowmanager"
LoadingPanelID
=
"main_loading"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"wndw_permissions"
LoadingPanelID
=
"main_loading"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"btnSave"
EventName
=
"Click"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"btnSave"
UpdatePanelRenderMode
=
"Inline"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"btnCancel"
></
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
asp:Button
ID
=
"cmdTest"
runat
=
"server"
OnClick
=
"cmdTest_Click"
/>
<
telerik:RadSplitter
ID
=
"RadSplitter1"
runat
=
"server"
Height
=
"700px"
Width
=
"100%"
EnableViewState
=
"false"
>
<
telerik:RadPane
ID
=
"Pane1"
runat
=
"server"
Height
=
"100%"
Width
=
"20%"
>
<
telerik:RadTreeView
ID
=
"tvRequestList"
runat
=
"server"
Skin
=
"Metro"
PersistLoadOnDemandNodes
=
"true"
OnNodeExpand
=
"tvRequestList_NodeExpand"
OnNodeClick
=
"tvRequestList_NodeClick"
>
</
telerik:RadTreeView
>
</
telerik:RadPane
>
<
telerik:RadSplitBar
ID
=
"RadSplitbar1"
runat
=
"server"
CollapseMode
=
"Forward"
>
</
telerik:RadSplitBar
>
<
telerik:RadPane
ID
=
"Pane2"
runat
=
"server"
>
Pane2 - 100px
</
telerik:RadPane
>
<%-- <
telerik:RadSplitBar
ID
=
"Radsplitbar2"
runat
=
"server"
CollapseMode
=
"Forward"
>
</
telerik:RadSplitBar
>
<
telerik:RadPane
ID
=
"Pane3"
runat
=
"server"
Height
=
"150"
>
Pane3 - 150px
</
telerik:RadPane
>--%>
</
telerik:RadSplitter
>
<
telerik:RadWindowManager
runat
=
"server"
ID
=
"RadWindowManager1"
EnableViewState
=
"true"
></
telerik:RadWindowManager
>
</
asp:Content
>
Code Behind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Jabil.Core;
using DataEntities.Application.Context;
using DataEntities.Application.Entities;
using Telerik.Web.UI;
using System.Collections;
using System.Collections.Generic;
namespace WebApplication.Forms
{
public partial class RequestManager : FrameworkPage
{
protected void Page_Load(object sender, EventArgs e)
{
this.Master.PageTitle = "Request Manager";
if (!IsPostBack)
{
LoadRootNodes(tvRequestList);
}
}
private void LoadRootNodes(RadTreeView tv)
{
using (RequestsDataContext rdc = new RequestsDataContext(string.Empty))
{
List<
RequestManagerTreeList
> tl = rdc.GetRequestManagerTreeViewList(1, 0, false).ToList<
RequestManagerTreeList
>();
foreach (RequestManagerTreeList tlItem in tl)
{
RadTreeNode tn = new RadTreeNode();
tn.Text = tlItem.ItemName;
tn.Value = ("L1" + tlItem.ItemId.ToString());
tn.ExpandMode = TreeNodeExpandMode.ServerSideCallBack;
tv.Nodes.Add(tn);
}
}
}
protected void tvRequestList_NodeExpand(object sender, RadTreeNodeEventArgs e)
{
try
{
using (RequestsDataContext rdc = new RequestsDataContext(string.Empty))
{
string itemValue = e.Node.Value;
if (itemValue.Substring(0, 1) == "L")
{
int level = Convert.ToInt32(itemValue.Substring(1, 1)) + 1;
int itemId = Convert.ToInt32(itemValue.Substring(2, itemValue.Length - 2).ToString());
string levelTag = "L" + level.ToString();
List<
RequestManagerTreeList
> tl = rdc.GetRequestManagerTreeViewList(level, itemId, false).ToList<
RequestManagerTreeList
>();
foreach (RequestManagerTreeList tlItem in tl)
{
RadTreeNode tn = new RadTreeNode();
tn.Text = tlItem.ItemName;
tn.Value = levelTag + tlItem.ItemId.ToString();
if (level < 3)
{
tn.ExpandMode = TreeNodeExpandMode.ServerSideCallBack;
}
e.Node.Nodes.Add(tn);
}
}
}
}
catch (Exception ex)
{
LogError(ex);
show_error_message(ex.Message);
}
}
protected void tvRequestList_NodeClick(object sender, RadTreeNodeEventArgs e)
{
show_error_message("Test");
}
private void show_error_message(string error_message)
{
string error = error_message.Replace("'", "");
main_ajaxmanager.ResponseScripts.Add(string.Format("window.radalert(\"" + error + "\")"));
}
protected void cmdTest_Click(object sender, EventArgs e)
{
show_error_message("Test");
}
}
}