2015-10-26 58 views
0

我正在嘗試完成顯示某個項目的查看註釋的任務。 按照這種觀點,我使用的劍道UI電網:如何顯示來自用戶標識的成員身份用戶名

@(Html.Kendo().Grid<Model>() 
    .Name("ReviewCommentsGrid") 
    .Columns(
     columns => 
     { 
      columns.Bound(rc => rc.UserId); 
      columns.Bound(rc => rc.Comment); 
      columns.Bound(rc => rc.CommentDate); 
      columns.Bound(rc => rc.UpdateCommentDate); 
      columns.Command(cmd => cmd.Edit()); 
     } 
    ) 
    .Editable(editable => editable.Mode(GridEditMode.InLine); 
    .Pageable() 
    .Sortable() 
    .DataSource(
     dataSource => dataSource 
     .Ajax() 
     .Sort(sort => sort.Add("UpdateCommentDate").Descending()) 
     .Sort(sort => sort.Add("CommentDate").Descending()) 
     .Model(model => 
     { 
      model.Id(rc => rc.ReviewCommentId); 
      model.Field(rc => rc.Comment).Editable(true); 
      model.Field(rc => rc.UserId).Editable(false); 
      model.Field(rc => rc.CommentDate).Editable(false); 
      model.Field(rc => rc.UpdateCommentDate).Editable(false); 
     }) 
     .Events(events => events.Error("error_handler")) 
     .Read(read => read.Action("ReadReviewComments", "Controller")) 
     .Update(update => update.Action("UpdateReviewComment", "Controller")) 
    ) 
) 

的問題 如這裏看到的,我使用用戶ID在第一列中。這是我的ASP.NET Membership表中的Guid。但是,我不想顯示爲Guid,而想顯示爲UserName。我不能離開細胞成爲Guid。

我試圖以下變化:

columns.Bound(rc => Membership.GetUser(rc.UserId).UserName); 

結果:空白表格單元

columns.Template(@<text>@Membership.GetUser(rc.UserId).UserName</text>); 

結果:空白表格單元

任何建議,將理解的。
謝謝。

編輯 我已經決定把從AjaxDataSource結合了。我通過將模型列表綁定到視圖的父視圖模型(如果在控制器中填充此列表)來開始。

1)刪除數據源從電網
2)結合拆下Command.Edit()並用Command.Custom()取代它,像這樣:

columns.Command(cmd => cmd.Custom("Update").Text("Update").Click("updateComment")); 

3)現在,因爲沒有Ajax的,我可以使用服務器端Column.Template
4)現在,因爲我能夠與服務器端綁定:

columns.Template(@<text><span>@Membership.GetUser(item.UserId).UserName</span></text>).Title("User Name); 

謝謝
傑森

回答

0

您必須使用ClientTemplate使用Ajax結合。

columns.Template(@<text></text>) 
     .ClientTemplate(@<text>@Membership.GetUser(#= UserId #) 
             .UserName</text>); 

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/configuration#clienttemplate

+0

不幸的是,我得到一個編譯錯誤。 'CS1660:不能將lambda表達式轉換爲'string'類型,因爲它不是委託類型。我一直在尋找替代品。我使用'item'而不是'rc',結果是一個空的參數,這是沒有意義的。 –

+0

嘗試散列語法。見編輯的答案。 http://docs.telerik.com/kendo-ui/framework/templates/overview –

+0

我已經嘗試過。這就像使用客戶端和服務器端方法一樣。這是不可能的,因爲服務器在客戶端之前呈現。 –

相關問題