Skrývají ASP.NET SiteMap uzly v ovládacím prvku TreeView

hlasů
0

Mám Sitemap se všemi svými uzly. Jsem pomocí ovládacího prvku TreeView, který je spojen s Sitemap pro navigaci. Nyní bych chtěl skrýt určité uzly od objevit se na TreeView. Je možné to udělat?

Položena 22/04/2009 v 11:51
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
6

Ano, je to určitě možné. Způsob, jakým to udělat, je přidat vlastní „IsPhantom“ atribut uzlů nechceme je uvedeno v souboru Sitemap (a různých jiných místech příliš):

<siteMapNode url="~/Welcome.aspx" title="Welcome" description="" isPhantom="true" />

Pak při kontrole mapa webu, použijte následující kód odebrat uzly, které mají „IsPhantom“ atribut:

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);
}
Odpovězeno 22/04/2009 v 12:20
zdroj uživatelem

hlasů
0

Na jakých kritérií bázi? Pokud si jen chcete skrýt určité jednotlivé uzly, se přihlásit k odběru události NodeDataBound z TreeView a nastavit celou položku (uzel) do Visible = false.

Potřebujete-li to v lepším způsobem a poskytují větší flexibilitu, tak bych poradit, že jste implementovat vlastní SiteMapProvider. Pak můžete mít vlastnost ShowInNavigation pro každý mapa webu uzlu a bude moci stanovit, že při konstruování souboru Sitemap.

Odpovězeno 22/04/2009 v 12:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more