Hello,
I'm trying to build a RadTreeView control programmatically (as part of a CompositeControl). I'm getting the ICallbackEventHandler error when I try to expand the node (ServerSideCallBack mode).
I first tried this on an ASPX page and it's working fine. When I migrated the code to the CompositeControl, I was no longer able to set the ExpandMode property at the TreeView level, only at the node level.
ScriptManager is registered. I implemented ICallbackEventHandler and INamingContainer (which wasn't necessary in the ASPX version).
I'm not sure what else to do.
Here's what my code looks like. Has anyone else tried creating RadTreeView programmatically?
I'm trying to build a RadTreeView control programmatically (as part of a CompositeControl). I'm getting the ICallbackEventHandler error when I try to expand the node (ServerSideCallBack mode).
I first tried this on an ASPX page and it's working fine. When I migrated the code to the CompositeControl, I was no longer able to set the ExpandMode property at the TreeView level, only at the node level.
ScriptManager is registered. I implemented ICallbackEventHandler and INamingContainer (which wasn't necessary in the ASPX version).
I'm not sure what else to do.
Here's what my code looks like. Has anyone else tried creating RadTreeView programmatically?
protected override void CreateChildControls() |
{ |
Controls.Clear(); |
try |
{ |
if (!Page.IsPostBack) |
{ |
m_Tree = new RadTreeView(); |
m_Tree.NodeExpand += new RadTreeViewEventHandler(m_Tree_NodeExpand); |
foreach (MyDataItem mdi in SomethingThatReturnsItems) |
{ |
RadTreeNode node = CreateNode(mdi); |
if (node != null) |
m_Tree.Nodes.Add(node); |
} |
Controls.Add(m_Tree); |
} |
catch (Exception ex) |
{ |
Log.LogEvent("Error building tree.", ex); |
} |
base.CreateChildControls(); |
} |
void m_Tree_NodeExpand(object sender, RadTreeNodeEventArgs e) |
{ |
foreach (MyDataItem mdi in SomethingThatReturnsChildItems) |
{ |
RadTreeNode node = CreateNode(mdi); |
if (node != null) |
e.Node.Nodes.Add(node); |
} |
e.Node.Expanded = true; |
} |
private RadTreeNode CreateNode(MyDataItem kf) |
{ |
try |
{ |
RadTreeNode node = new RadTreeNode(); |
node.Text = kf.HomePage.CmsPage.Title; |
node.Value = kf.ID.ToString(); |
node.NavigateUrl = kf.HomePage.DefaultUrl; |
node.ExpandedImageUrl = EXPANDED_FOLDER; |
node.ImageUrl = CLOSED_FOLDER; |
if (kf.HasChildren) |
node.ExpandMode = TreeNodeExpandMode.ServerSideCallBack; |
return node; |
} |
catch (Exception ex) |
{ |
Log.LogEvent("Error building tree node.", ex); |
return null; |
} |
} |