【问题标题】:How to get a sites nodes in the topnavbar in sharepoint 2010?如何在 sharepoint 2010 的顶部导航栏中获取站点节点?
【发布时间】:2012-08-02 20:19:54
【问题描述】:

我有一个名为 MySite 的网站 在这个站点中,我有一个名为 Resources 的文档库和两个名为 site1 和 site2 的子站点。

在 MySite 上,我有一个带有链接的顶部导航栏: 我的网站 |资源 |站点1 |站点2

当我尝试获取导航节点时,我只得到其中一个,那就是资源(我想获取 site1 和 site2 以便我可以修改它们)。无论是文档库还是子站点,如何获取所有节点?

我使用的代码:

SPNavigationNodeCollection topNavBar = parentID.Navigation.TopNavigationBar;
string nodes ="";
foreach (SPNavigationNode node in topNavBar)
{
nodes += node.Url.ToString();
}

label1.Text = nodes;

为什么我只获得资源节点?

编辑 我可以添加到父网站的正确链接

newWeb.ParentWeb.Navigation.TopNavigationBar.AddAsLast(new SPNavigationNode(newSiteName, newSiteName + "/pages/home.aspx"));

现在这将使我进入 wiki,并且由于子站点继承导航,因此它们上的链接将是相同的。但是,有了这个,我得到了两个指向 wiki 的链接,一个正在使用上面的代码,一个已经损坏,因此我尝试以与添加正确链接类似的方式删除该链接。不过,我希望有一种更方便的方法。

【问题讨论】:

  • 运行代码的用户帐户是什么?它是否有权查看子站点?您可以尝试提升上下文。
  • 网站集管理员。如果我提升上下文,您认为我不仅会获得库节点,还会获得子站点节点?更新了我的帖子
  • 基于团队、发布或其他什么的网站定义是什么?
  • 父网站是团队网站,我向这些网站添加了一个企业 wiki(应该是 wiki 库是的)和博客网站
  • 我现在得到了节点,不知道我之前做错了什么,但我现在尝试使用 foreach (SPNavigationNode node in newWeb.ParentWeb.Navigation.TopNavigationBar) { if(node.标题 == newSiteName) { node.url = newSiteName + "/pages/home.aspx";节点.更新(); } } 虽然不起作用

标签: sharepoint sharepoint-2010


【解决方案1】:

我认为资源 |站点1 | Site2 是网站集。使用以下代码获取所有网站集:

SPSite site = new SPSite("siteURL");
SPWeb web = site.OpenWeb();
SPSiteCollection coll = web.webs;

您将获得所有网站集Resources、Site1、Site2

【讨论】:

  • 抱歉,我该怎么处理 coll?
  • 现在在 coll 中执行 for 循环并获取您想要的所有站点集合名称和 url。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
相关资源
最近更新 更多