TreeView节点的查找和隐藏
在开发项目的过程中我们往往要涉及到导航和权限,这时候TreeView就派上用场了。
在TreeView我们往往要查找一个节点,但是我们往往不知道节点的路径,而是了解节点的Value值;同时也需要影藏TreeView中的部分节点。
以下代码在Vs2008 3.5的框架上测试过
public static class StaticClass
{
public static TreeNode FindByVale(this TreeNodeCollection nodes, string value)
{
TreeNode node;
for (int i = 0; i < nodes.Count; i++)
{
node = nodes[i];
if (node.Value.Equals(value))
return node;
}
for (int i = 0; i < nodes.Count; i++)
{
if (nodes[i].ChildNodes.Count > 0)
return FindByVale(nodes[i].ChildNodes, value);
}
return null;
}
public static void HideTreeViewNodeByText(this Page page, TreeView tree, string text)
{
string js = @" <script type='text/javascript'> var val = '" + text + "'; var tree = document.getElementById('" + tree.ClientID + "'); var hrefs= tree.getElementsByTagName('a'); for(var i=0;i<hrefs.length;i++) { var node=hrefs[i]; if(node.innerHTML==val) { node = node.parentNode.parentNode.parentNode.parentNode; node.style.display = 'none'; } } </script>";
page.ClientScript.RegisterStartupScript(page.GetType(), tree.ClientID, js);
}
public static void HideTreeViewNodeByText(this Page page, TreeView tree, TreeNode node)
{
HideTreeViewNodeByText(page, tree, node.Text);
foreach (TreeNode newNode in node.ChildNodes)
{
HideTreeViewNodeByText(page, tree, newNode);
}
}
public static void ShowClientMessage(this Page page, string message)
{
string js = string.Format("<script type='text/javascript'>alert('{0}')</script>", message);
page.ClientScript.RegisterStartupScript(page.GetType(),"page",js);
}