2011-05-10 12 views
0

検索結果ページをタブ付きレイアウトで(タブをカテゴリとして)レンダリングしようとしています。タブオーダーが製品、記事、動画であることを確認するにはどうすればよいですか?今すぐアルファベット順に印刷します(私が想定しているorderbyメソッドのcoz)。カスタム並べ替え/比較を作成するのはかなり新しいです。ありがとうございました!これは動作するはずです、多分100%最適ではないながらリスト<IGroup>カスタムソートc#

protected void ResultsRedendering(List<Item> searchResult) 
    { 
     _searchResults = searchResult.GroupBy(i => i.TemplateName).OrderBy(p=>p.Key).ToList(); 
     _searchResults.RemoveAll(i => i.Key != "Product" && i.Key != "Article" && i.Key != "Video"); 
     rptResultTab.DataSource = _searchResults; 
     rptResultTab.DataBind(); 
    } 

これは私の項目テンプレートは、各タブをレンダリングする方法です...

<ItemTemplate> 
      <li><a href="#<%#((IGrouping<string , Item>)Container.DataItem).Key %>"> 
       <%#((IGrouping<string, Item>)Container.DataItem).Key)%></a></li> 
</ItemTemplate> 

はまた、_searchResultはタイプのList<IGrouping<string,Item>>

答えて

1

です。

protected void ResultsRedendering(List<Item> searchResult) 
      { 
       var _searchResults = searchResult 
       .OrderBy(o => o.Key == "Product" ? 1 : o.Key== "Article" ? 2 : 3}); 
       var rptResultTab.DataSource = _searchResults; 
       rptResultTab.DataBind(); 
      } 
+0

こんにちは、_searchResultオブジェクトはList >型であり、ロジックを使用しようとすると文句を言います。また、List >にキャストした場合、実行時にキャストできないと不満を吹きます。 – xoail

+0

あなたの答えは私にそれを働かせる方向を与えました...ありがとう...これは私が最後にしたものです... _searchResults = searchResult.GroupBy(i => i.TemplateName).OrderBy(o => o.Key == "Product" ? 1 : o.Key == "Article" ? 2 : 3).ToList(); xoail

1

あなたは彼らが少し楽で動作するようにするためにカテゴリの別々のリストを作ることができます。

var products = searchResult.Where(sr => sr.Key == "Product"); 
var articles = searchResult.Where(sr => sr.Key == "Article"); 
var videos = searchResult.Where(sr => sr.Key == "Video"); 

それはあなたが正確にあなたのデータバインディングを設定しているか私には不明ですので、これは私ができるすべてです本当に今お勧めします。さらに情報を追加すると、私はさらに助けてくれるかもしれません。

+0

これを提案していただきありがとうございます、私はちょうど詳細で私の質問を編集しました。 3つの異なるコレクションを作成する以外の方法があるかどうかわかりません。 – xoail

関連する問題