/ / Скриване на ASP.NET възли на SiteMap в TreeView контрол - asp.net, treeview, sitemap

Скриване на ASP.NET SiteMap възли в TreeView контрол - asp.net, treeview, sitemap

Имам SiteMap с всичките ми възли. Аз използвам TreeView контрол, който е свързан с SiteMap за навигация. Сега бих искал да скрия някои възли от появата на TreeView. Възможно ли е да направите това?

Отговори:

6 за отговор № 1

Да, това определено е възможно. Начинът, по който го правим, е да добавите атрибут "IsPhantom" към възлите, които не желаем да се показват в Sitemap (и в други места също):

<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.