我正在使用 sitemapa 节点并绑定它。如果 SiteMapNode 的 ShowInNavigation 标志为 false,我不会显示它。SiteMap.RootNode.ChildNodes 没有 ToList 方法。这个怎么查询?
SiteMapNodeCollection coll = SiteMap.RootNode.ChildNodes;
rptMainMenu.DataSource = coll;
rptMainMenu.DataBind();
在转发器的事件处理程序中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();