在TreeView控件中隐藏ASP.NET SiteMap节点

nto*_*ela 0 sitemap asp.net treeview

我有一个包含所有节点的SiteMap.我正在使用一个TreeView控件,该控件链接到SiteMap进行导航.现在我想隐藏某些节点出现在TreeView上.是否有可能做到这一点?

Pau*_*art 6

是的,这绝对是可能的.我们这样做的方法是将自定义的"IsPhantom"属性添加到我们不希望在站点地图中显示的节点(以及其他各种地方):

<siteMapNode url="~/Welcome.aspx" title="Welcome" description="" isPhantom="true" />
Run Code Online (Sandbox Code Playgroud)

然后在站点地图控件中,使用以下代码删除具有"IsPhantom"属性的节点:

protected void Page_Load(object sender, EventArgs e)
{
    TreeView1.TreeNodeDataBound += new TreeNodeEventHandler(TreeView1_TreeNodeDataBound);              
    SiteMapSource.Provider = this.CurrentProvider;
}

protected void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
{
    SiteMapNode thisMapNode = (SiteMapNode)e.Node.DataItem;
    TreeNode parentTreeNode = e.Node.Parent;

    if (thisMapNode["isPhantom"] != null && thisMapNode["isPhantom"].ToLower().Equals(bool.TrueString.ToLower()) && parentTreeNode != null)
        parentTreeNode.ChildNodes.Remove(e.Node);
}
Run Code Online (Sandbox Code Playgroud)