-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 に答える