/ Skrytie uzlov ASP.NET SiteMap v riadku TreeView - asp.net, treeview, sitemap

Skrytie uzlov ASP.NET SiteMap v riadku TreeView - asp.net, treeview, sitemap

Mám SiteMap so všetkými mojimi uzlami. Používam ovládací prvok TreeView, ktorý je prepojený so stránkou Sitemap pre navigáciu.A teraz by som chcel zakryť niektoré uzly, ktoré sa objavia na TreeView.Možno to urobiť?

odpovede:

6 pre odpoveď č. 1

Áno, to je určite možné. Spôsob, akým to robíme, je pridať vlastný atribút "IsPhantom" do uzlov, ktoré nechceme zobrazovať v súbore Sitemap (a tiež na iných miestach):

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

Potom v ovládacom systéme Sitemap použite nasledujúci kód na odstránenie uzlov, ktoré majú atribút "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);
}

0 pre odpoveď č. 2

Na základe akých kritérií? Ak chcete skryť konkrétne jednotlivé uzly, prihláste sa na udalosť NodeDataBound TreeView a nastavte celú položku (uzol) na hodnotu Visible = false.

Ak to potrebujete urobiť lepším spôsobom aposkytnúť väčšiu flexibilitu, odporúčam vám, aby ste implementovali svoj vlastný SiteMapProvider. Potom môžete mať vlastnosť ShowInNavigation pre každý uzel sitemap a mohli by ste ho nastaviť pri zostavovaní súboru Sitemap.