在导航sitemapnode中显示

时间:2013-01-18 13:16:06

标签: c# c#-4.0

我正在使用sitemapa节点并绑定它。如果SiteMapNode的ShowInNavigation标志为false,我不会显示它。 SiteMap.RootNode.ChildNodes没有ToList方法。如何查询?

 SiteMapNodeCollection coll = SiteMap.RootNode.ChildNodes;
 rptMainMenu.DataSource = coll;
 rptMainMenu.DataBind();

1 个答案:

答案 0 :(得分:0)

在转发器的ItemDataBound的事件处理程序中,您可以访问当前项目实例并根据您自己的逻辑对输出进行条件化。或者,您可以首先过滤传递给DataSource的数据。所以,像其中任何一个......

条件转发器输出:

void rptMainMenu_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
  var data = e.Item.DataItem as SiteMapNode;
  if (data != null && data.ShowInNavigation) {
    // proceed to populate the repeater item
  } else {
    // do something else
  }
}

在绑定之前使用Linq过滤节点:

SiteMapNodeCollection coll = SiteMap.RootNode.ChildNodes
  .Where(smn => smn.ShowInNavigation);
rptMainMenu.DataSource = coll;
rptMainMenu.DataBind();