2011-12-29 12 views
1

WebGrid列の書式を設定して、2つのデータ(姓と名)を連結することができます。ここで私が試していることはありますが、私はWebGridで(基本的なシナリオの他に)データを使う方法を完全に理解しているとは思えません。 (列名に、教師のオブジェクトは、私のビューに渡されているが、実際に先生の名前を取得するには、私は、ユーザーが複数の役割を再生することができますので、リンクされたユーザーオブジェクトからその情報を取得する必要があります。)2つのデータを含むWebGrid列の書式設定

grid.Column(
    columnName: "Teacher.User", 
    header: "Teacher", 
    style: "", 
    canSort: true, 
    format: (item) => 
     { 
      var text = Html.DisplayTextFor(item => item.LastName) + ", " + Html.DisplayTextFor(item => item.FirstName); 
      return Html.Raw(text); 
     } 
) 

答えて

1

ラムダ式を取る強力に型付けされたヘルパーは、WebGridヘルパーが溺れた動的式では動作しません。 item引数はformat関数に渡され、タイプはdynamicなので、ラムダ式では使用できません。私は、私は2枚一緒にデータの を連結することができますWebGridの列をフォーマットしようとしています

(姓名ビューモデルの優れた候補が。ただ、中に別のプロパティを追加何

あなたユーザー・ビューモデル:

public string FullName 
{ 
    get 
    { 
     return string.Format("{0}, {1}", this.LastName, this.FirstName); 
    } 
} 

ビューで使用します。

grid.Column(
    columnName: "Teacher.User.FullName", 
    header: "Teacher", 
    style: "", 
    canSort: true 
) 
一緒にデータの2枚を連結する0
+0

まあ...ええと...確か...あなたはそれを簡単にしたい場合。 (うわー...私は間違いなく、ドライバーを使って釘打ちをしようとしていて、ハンマーをピックアップしようと思っていませんでした。) – JasCav

+0

アップデートに関しては(強くタイプされたヘルパー...)どうしてこんなにうまくいったの? http://stackoverflow.com/questions/6894313/mvc3-webgrid-custom-text-in-column – JasCav

+2

@JasCav、強く型付けされたヘルプでは、私は、EditorFor、DisplayFor、TextBoxForなどのラムダ式を取るものを意味します...この例では、どのヘルパーも使用されていないことを示しています。 'Html.ActionLink'は強く型付けされたヘルパーではありません。このヘルパーでは、引数はラムダ式ではなく単純な型です。 –

11

最も簡単な方法は、続くこの

grid.Column("FullName", format: (item) => item.LastName+ ' ' + item.FirstName) 
+0

それは私のために働いた。これは正解なので+1してください。 – Dush

関連する問題