-2

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

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

1 回答 1

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();
于 2013-01-18T13:20:46.973 回答