リピーターのイベント ハンドラーで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();