/ / Приховування вузлів ASP.NET SiteMap в керуванні TreeView - asp.net, деревоподібне, sitemap

Приховування вузлів SiteMap ASP.NET в елементі керування TreeView - asp.net, treeview, sitemap

У мене є SiteMap з усіма моїми вузлами. Я використовую елемент керування TreeView, який пов'язаний з SiteMap для навігації. Тепер я хотів би приховати певні вузли, що з'являються на TreeView.

Відповіді:

6 за відповідь № 1

Так, це, безумовно, можливо. Ми робимо це, щоб додати власний атрибут "IsPhantom" до вузлів, які ми не хочемо відображати в карті сайту (і в інших місцях):

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

Потім у контролі sitemap використовуйте наступний код для видалення вузлів, які мають атрибут "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 для відповіді № 2

Виходячи з яких критеріїв? Якщо потрібно лише приховати окремі вузли, підпишіться на подію NodeDataBound TreeView і встановіть весь елемент (вузол) на Visible = false.

Якщо вам потрібно зробити це краще ізабезпечити більшу гнучкість, я б радив вам реалізувати свій власний SiteMapProvider. Тоді ви можете мати властивість ShowInNavigation для кожного вузла sitemap, і зможете встановити це при побудові файлу sitemap.