2011-12-29 13 views
1

我想格式化WebGrid列,以便可以將兩部分數據連接起來(名字和姓氏)。這是我正在嘗試的,但我承認我不認爲我完全理解如何在WebGrid中使用數據(除了基本場景)。 (列名,教師對象被傳遞給我的看法,但真正得到老師的名字,我不得不從鏈接的用戶對象獲得這些信息,因爲用戶可以扮演多個角色。)格式化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

採用lambda表達式的強類型幫助程序不適用於動態表達式,這是WebGrid幫助程序被淹沒的內容。傳遞給format函數的item參數的類型爲dynamic,因此您不能將它用於lambda表達式。

我試圖格式化的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 
) 
來連接兩個數據一起0
+0

嗯......嗯......肯定...如果你想使它容易。 (哇......我絕對是想用螺絲刀敲釘子,甚至沒有想到要拿起錘子。) – JasCav 2011-12-29 15:54:30

+0

關於你的更新(「強類型幫手......」)爲什麼這個工作如此順利? http://stackoverflow.com/questions/6894313/mvc3-webgrid-custom-text-in-column – JasCav 2011-12-29 16:05:28

+2

@JasCav,通過強類型的幫助我的意思是一個需要一個lambda表達式,如EditorFor,DisplayFor,TextBoxFor,...在這個例子中,你已經顯示沒有使用這些助手。 'Html.ActionLink'不是強類型的幫助器。在這個幫助器中,參數是簡單的類型,而不是lambda表達式。 – 2011-12-29 16:09:30

11

簡單的方式,按照這個

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

它爲我工作。 +1,因爲這是正確的答案。 – Dush 2015-08-07 06:37:10