Hi,
I'm developing a Tree wich can dynamically LoadOnDemand/ Expand/ Delete/ Filter and so on. But every here and now I get the following Script Error when I collapse all Nodes in Runtime, via recursiv fetching the TreeNodes with my seperate NodeInformation List.
The Code:
The Error:
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322)
Timestamp: Fri, 11 Dec 2009 10:41:10 UTC
Message: Sys.InvalidOperationException: ManagedRuntimeError error #4004 in control 'silverlightControlHost': System.ArgumentException: Der Wert liegt außerhalb des erwarteten Bereichs.
bei MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
bei MS.Internal.XcpImports.MethodPack(IntPtr objectPtr, String methodName, Object[] rawData)
bei MS.Internal.XcpImports.UIElement_TransformToVisual(UIElement element, UIElement visual)
bei System.Windows.UIElement.TransformToVisual(UIElement visual)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.GetRectangle(DependencyObject element)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.IsInViewport(DependencyObject element)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.MeasureOverride(Size constraint)
bei System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
Line: 453
Char: 17
Code: 0
URI: http://localhost:4044/ScriptResource.axd?d=RLKMRk7gF37BIBEIy5_qn1oEqvyhKmRa-9SCmrxsEFQGLfIoB5vD4BU6rIB9_qECHyB4ng7q2uSTjXzKVEVmcQ2&t=1f24b496
Additional, when my Node has no Children, at the first Click for LoadOnDemand neither the LoadOnDemand Event is fired nor the Expand Event. At the 2nd Click LoadOnDemand is fired.
I don't think that my code will help you much but I post my TreeBuilding Function:
Can anybody help me what I'm doing wrong?
Alex
I'm developing a Tree wich can dynamically LoadOnDemand/ Expand/ Delete/ Filter and so on. But every here and now I get the following Script Error when I collapse all Nodes in Runtime, via recursiv fetching the TreeNodes with my seperate NodeInformation List.
The Code:
RadTreeViewItem PUChild = PPUEChild.Items[puCnt] as RadTreeViewItem; |
if (GetNodeInformation(PUChild.Name).isExpanded == null || GetNodeInformation(PUChild.Name).isExpanded == true) |
GetNodeInformation(PUChild.Name).isExpanded = PUChild.IsExpanded = true; |
else |
PUChild.IsExpanded = false; |
The Error:
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322)
Timestamp: Fri, 11 Dec 2009 10:41:10 UTC
Message: Sys.InvalidOperationException: ManagedRuntimeError error #4004 in control 'silverlightControlHost': System.ArgumentException: Der Wert liegt außerhalb des erwarteten Bereichs.
bei MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
bei MS.Internal.XcpImports.MethodPack(IntPtr objectPtr, String methodName, Object[] rawData)
bei MS.Internal.XcpImports.UIElement_TransformToVisual(UIElement element, UIElement visual)
bei System.Windows.UIElement.TransformToVisual(UIElement visual)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.GetRectangle(DependencyObject element)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.IsInViewport(DependencyObject element)
bei Telerik.Windows.Controls.TreeView.TreeViewPanel.MeasureOverride(Size constraint)
bei System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
Line: 453
Char: 17
Code: 0
URI: http://localhost:4044/ScriptResource.axd?d=RLKMRk7gF37BIBEIy5_qn1oEqvyhKmRa-9SCmrxsEFQGLfIoB5vD4BU6rIB9_qECHyB4ng7q2uSTjXzKVEVmcQ2&t=1f24b496
Additional, when my Node has no Children, at the first Click for LoadOnDemand neither the LoadOnDemand Event is fired nor the Expand Event. At the 2nd Click LoadOnDemand is fired.
I don't think that my code will help you much but I post my TreeBuilding Function:
using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Windows; |
using System.Windows.Controls; |
using Telerik.Windows.Controls; |
namespace SilverlightApplication1 |
{ |
public partial class MainPage : UserControl |
{ |
private List<RadTreeViewItem> SortingNodes = null; |
public Dictionary<Guid, NodeInformation> NodeInformations = new Dictionary<Guid, NodeInformation>(); |
Guid level11 = Guid.NewGuid(); |
Guid level12 = Guid.NewGuid(); |
public MainPage() |
{ |
InitializeComponent(); |
//this.AddItems(this.treeView1); |
NodeInformations.Add(new Guid(), new NodeInformation() { id = new Guid(), name = "root", nodeType = NodeType.Root, parent = null }); |
NodeInformations.Add(level11, new NodeInformation() { id = level11, name = "Level11", nodeType = NodeType.Level1, parent = new Guid() }); |
NodeInformations.Add(level12, new NodeInformation() { id = level12, name = "Level12", nodeType = NodeType.Level1, parent = new Guid() }); |
BuildTree(); |
} |
private void ClearTree() |
{ |
treeView1.Items.Clear(); |
treeView1.CheckedItems.Clear(); |
SortingNodes = new List<RadTreeViewItem>(); |
} |
private void BuildTree() |
{ |
ClearTree(); |
AddChildNodes(NodeType.Root); |
AddChildNodes(NodeType.Level1); |
AddChildNodes(NodeType.Level2); |
} |
private void RadTreeView_LoadOnDemand(object sender, Telerik.Windows.RadRoutedEventArgs e) |
{ |
string message = string.Format("[{0}] LoadOnDemand Event Fired", DateTime.Now.ToLongTimeString()); |
this.log.Items.Add(message); |
Guid level21 = Guid.NewGuid(); |
Guid level22 = Guid.NewGuid(); |
NodeInformations.Add(level21, new NodeInformation() { id = level21, name = "Level21", nodeType = NodeType.Level2, parent = level11 }); |
NodeInformations.Add(level22, new NodeInformation() { id = level22, name = "Level22", nodeType = NodeType.Level2, parent = level12 }); |
BuildTree(); |
} |
private void RadTreeView_Expanded(object sender, Telerik.Windows.RadRoutedEventArgs e) |
{ |
string message = string.Format("[{0}] Expanded Event Fired", DateTime.Now.ToLongTimeString()); |
this.log.Items.Add(message); |
} |
private void AddChildNodes(NodeType nodeType) |
{ |
List<NodeInformation> list; |
list = (from e in NodeInformations where e.Value.nodeType.Equals(nodeType) select e.Value).ToList(); |
RadTreeViewItem node = null; |
for (int i = 0; i < list.Count; i++) |
{ |
node = new RadTreeViewItem(); |
node.Header = list[i].name; |
node.Name = list[i].id.ToString(); |
node.IsExpanded = true; |
Telerik.Windows.Controls.ItemsControl parentNode = null; |
switch (nodeType) |
{ |
case NodeType.Root: |
treeView1.Items.Add(node); |
SortingNodes.Add(node); |
break; |
case NodeType.Level1: |
case NodeType.Level2: |
parentNode = (from ex in SortingNodes where ex.Name.Equals(list[i].parent.ToString()) select ex).FirstOrDefault(); |
SortingNodes.Add(node); |
break; |
} |
if (nodeType != NodeType.Root) |
{ |
if (parentNode == null) |
MessageBox.Show("No Parent!"); |
else |
parentNode.Items.Add(node); |
} |
} |
} |
} |
public enum NodeType { Root, Level1, Level2}; |
public class NodeInformation |
{ |
public Guid id; |
public string name; |
public Guid? parent; |
public NodeType nodeType; |
} |
} |
Can anybody help me what I'm doing wrong?
Alex