P
pbd22
Hi.
I am getting odd treeview results and hope you can help.
I am parsing a string, "x/y/z", turning it into an array (that
always seems to start with an empty string) and then
using the elements of that array to populate a single tree.
The first non-empty element is the root, the last is a file -
everything in between is a folder.
THE PROBLEM is that I am getting the root with an
empty folder as one tree, then the next element with
all the other nodes below it.
So,
array [1], [2], [3], [4]
Should produce the following results:
-- [1] (root folder)
-------[2] (folder)
------------[3] (folder)
------------[4] (file)
But, I am getting
--[1] (root folder)
------[?] (empty folder with no name)
--[2] (folder)
------[3] (folder)
------[4] (file)
And this pattern repeats down the grid.
Below is the code, I would really appreciate some
clear input help here. Thanks.
public void OnDataBinding(object sender, EventArgs e)
{
int count = 0;
TreeView tree = (TreeView)sender;
GridViewRow container = (GridViewRow)tree.NamingContainer;
if (storedNodes.Count != 0)
{
string path = storedNodes.Pop().ToString();
string[] arr = path.Split('/');
root = new TreeNode();
root.ImageUrl = "folder.gif";
if (arr[0] != "")
root.Text += arr[0].ToString();
else if (arr[1] != "")
root.Text += arr[1].ToString();
root.SelectAction = TreeNodeSelectAction.SelectExpand;
root.PopulateOnDemand = true;
root.SelectAction = TreeNodeSelectAction.Expand;
for (int i = 1; i <= arr.Length - 1; i++)
{
if (arr != "")
{
TreeNode node = new TreeNode();
if (i != arr.Length - 1)
{
node.ImageUrl = "folder.gif";
node.Text += arr.ToString();
node.SelectAction =
TreeNodeSelectAction.SelectExpand;
node.PopulateOnDemand = true;
node.SelectAction =
TreeNodeSelectAction.Expand;
}
else
{
node.ImageUrl = "play.jpg";
node.Text += arr.ToString();
node.SelectAction = TreeNodeSelectAction.None;
node.Value = "vBrickTree";
node.SelectAction =
TreeNodeSelectAction.Expand;
}
root.ChildNodes.Add(node);
count++;
}
}
tree.Nodes.Add(root);
}
}
I am getting odd treeview results and hope you can help.
I am parsing a string, "x/y/z", turning it into an array (that
always seems to start with an empty string) and then
using the elements of that array to populate a single tree.
The first non-empty element is the root, the last is a file -
everything in between is a folder.
THE PROBLEM is that I am getting the root with an
empty folder as one tree, then the next element with
all the other nodes below it.
So,
array [1], [2], [3], [4]
Should produce the following results:
-- [1] (root folder)
-------[2] (folder)
------------[3] (folder)
------------[4] (file)
But, I am getting
--[1] (root folder)
------[?] (empty folder with no name)
--[2] (folder)
------[3] (folder)
------[4] (file)
And this pattern repeats down the grid.
Below is the code, I would really appreciate some
clear input help here. Thanks.
public void OnDataBinding(object sender, EventArgs e)
{
int count = 0;
TreeView tree = (TreeView)sender;
GridViewRow container = (GridViewRow)tree.NamingContainer;
if (storedNodes.Count != 0)
{
string path = storedNodes.Pop().ToString();
string[] arr = path.Split('/');
root = new TreeNode();
root.ImageUrl = "folder.gif";
if (arr[0] != "")
root.Text += arr[0].ToString();
else if (arr[1] != "")
root.Text += arr[1].ToString();
root.SelectAction = TreeNodeSelectAction.SelectExpand;
root.PopulateOnDemand = true;
root.SelectAction = TreeNodeSelectAction.Expand;
for (int i = 1; i <= arr.Length - 1; i++)
{
if (arr != "")
{
TreeNode node = new TreeNode();
if (i != arr.Length - 1)
{
node.ImageUrl = "folder.gif";
node.Text += arr.ToString();
node.SelectAction =
TreeNodeSelectAction.SelectExpand;
node.PopulateOnDemand = true;
node.SelectAction =
TreeNodeSelectAction.Expand;
}
else
{
node.ImageUrl = "play.jpg";
node.Text += arr.ToString();
node.SelectAction = TreeNodeSelectAction.None;
node.Value = "vBrickTree";
node.SelectAction =
TreeNodeSelectAction.Expand;
}
root.ChildNodes.Add(node);
count++;
}
}
tree.Nodes.Add(root);
}
}