2010-12-01 13 views
0

私はデータベースから(LINQからSQLに)引っ張られる一連のオブジェクトのHtml.Gridを使用しています。ここにグリッドコードがあります(私は何かを考案したデータに変更しました)。このページはPeopleに強く入力されています。一般的にリストを並べ替える方法

<%=Html.Grid<People>(Model)  
// Display chose solution information. 
    .Columns(column => 
     { 
      column.For(person => person.Name); 
      column.For(person => person.Address.City); 
     } 
    ) 
%> 

データベース内では、私はPeopleテーブルと外部テーブルによってリンクされたAddressテーブルを持っています。 (これはやはり問題を記述しようとしたものです)

私は、ユーザが一般的に列を並べ替えることを許可します。以前の開発者が、私はそれをソートするperson.Name欄をクリックした場合、私は、ソートしていたオブジェクトが人(あるときに...

// 
// GET: Results/Grid 
public ActionResult Grid(int id, GridSortOptions sort) 
{ 
    if (sort == null) 
    { 
     sort = new GridSortOptions(); 
    } 

    Solution solution = repository.GetSolution(id); 
    List<People> people = solution.People.ToList(); 
    if (!string.IsNullOrEmpty(sort.Column)) 
    { 
     people = solution.People.ToList().OrderBy(sort.Column, sort.Direction).ToList(); 
    } 

    return PartialView("Grid", people); 
} 

のようにこれは素晴らしい作品、コントローラ内のソートにハードコーディングされていました昇順または降順)。ただし、住所の列を並べ替える場合、市には市が含まれていないため例外が発生します。

私の質問は...どのようなタイプが先であるかを知らずにこの種のことを一般的に行う方法はありますか?ありがとう。

+0

あなたのコードのいくつかはあまり明確ではない 'ViewData [" sort "] = sort;'これは逆であると思われますか?子オブジェクトのレベルは1つだけですか複数ですか? – msarchet

+0

@msarchet - 私はこのコードを以前の開発者から継承しています。私はその声明が必要だとは思わない。それを反映するための更新。ありがとう。 – JasCav

答えて

0

JavaScriptのテーブルソーターはどうですか?もちろん、あなたのリストがページングを要求するのに十分な大きさであれば動作しません。

+0

お勧めしますか?これは可能な解決策かもしれません(あなたが言ったように、ページングは​​問題になる可能性があります)。 – JasCav

+0

このようなもので行った:http://tablesorter.com/ – JasCav

0

私は少し前に同様の質問を投稿しました。私はそのポストに乗った答えは、あなたがあなたの方法で得るのを助けるかもしれない:

Looking for a better way to sort my List<T>

基本的に答えは>のFunc <のマップを保持している(または類似)とコードブロックで適切なものを呼び出すことをお勧めします。

関連する問題