2016-06-13 26 views
0

我很厭煩解決這個問題。我只想顯示兩個值,例如在columns.Foreignkey中。在相同列上顯示名稱和ID。我該怎麼做呢?請回復在劍道中顯示兩個值外鍵Grid MVC

@(Html.Kendo().Grid<Project_Test.Models.Workcenter>() 

    .Name("grid") 
    .Columns(columns => 
      { 

    columns.Bound(p => p.WorkcenterCode).Width(80).Title("Workcentercode").ClientTemplate(""); 

columns.Bound(p => p.WorkCenterSection).Width(84).Title("WorkcenterSection"); 

columns.ForeignKey(p => p.WorkcenterCategory, (System.Collections.IEnumerable)ViewBag.WorkcenterCategory, "WorkcenterCategoryID", "WorkcenterCategoryName") 
     .Title("Category").Width(200); 

      //command.Custom("Details").Click("showDetails").HtmlAttributes(new { @class = "k-font-icon k-i-insert-unordered-list " }); 
      command.Custom(" ").Click("showDetails").HtmlAttributes(new { @class = "btn btn-default btn-xs glyphicon glyphicon-list-alt" }); 
     }).Width(230); 
    }) 
     // .Events(e => e.DataBound("onDataBound")) 
    .ToolBar(toolbar => toolbar.Create()) 
    .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("Workcent").DisplayDeleteConfirmation("Are you sure to delete this Workcenter")) 
    .Sortable() 
     .Pageable(pageable => pageable 
        .Refresh(true) 
        .PageSizes(true) 
         .Messages(messages => messages.Refresh("Click to refresh")) 
        .ButtonCount(8)) 
         .Groupable() 

    .HtmlAttributes(new { style = "height:580px;" }) 
     .Resizable(resize => resize.Columns(true)) 
     .Reorderable(reorder => reorder.Columns(true)) 
       .Selectable() 
      .Scrollable() 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .PageSize(20) 
     .Events(events => events.Error("error_handler")) 
      .Model(model => 
      { 
       model.Id(p => p.WorkcenterID); 
       model.Field(p => p.WorkcenterID).Editable(true); 
       model.Field(p => p.UpdatedBy).DefaultValue(User.Identity.Name); 
       model.Field(p => p.CreatedBy).DefaultValue(User.Identity.Name); 

      }) 
      .Create(update => update.Action("Employee_Create", "Home")) 
     .Read(read => read.Action("List", "Home")) 
    .Update(update => update.Action("Products_Update", "Home")) 
      .Destroy(update => update.Action("adress_Destroy", "Home")) 

    ) 

回答

0

的ForeignKey的列只顯示與相應WorkcenterCategoryID從綁定列表(ViewBag.WorkcenterCategory)相關的WorkcenterCategoryName。

只是要在ViewBag.WorkcenterCategory每個元素的WorkcenterCategoryName包含你真的想顯示更具體的文字,即

"IDOfSelectedItem (TextOfSelectedItem)"

,而不是僅僅

"TextOfSelectedItem" 

編輯:

我假設你的服務器動作填充ViewBag.WorkcenterCategory類似於:

ViewBag.WorkcenterCategory = GetWorkcenterCategories() 
    .Select(x => new 
    { 
     WorkcenterID = x.ID, 
     WorkcenterName = x.Name 
    }); 

比方說,這個返回列表:

{ WorkcenterID = 1, WorkcenterName = "One" }, 
{ WorkcenterID = 2, WorkcenterName = "Two" } 

然後ForeignKey的列映射某個特定鍵綁定到它(ViewBag.WorkcenterCategory)列表中的相應的項目和相關的文本值該鍵將顯示,無論WorkcenterName字段中包含什麼。 即1的值將在網格中顯示「One」。

ViewBag.WorkcenterCategory = GetWorkcenterCategories() 
    .Select(x => new 
    { 
     WorkcenterID = x.ID, 
     WorkcenterName = x.ID + " (" + x.Name + ")" 
    }); 

如果要顯示比對工作中心的只是名字更多,然後在ViewBag.WorkcenterCategory列表中你希望顯示的文本,也就是設置對象的WorkcenterName這將返回列表:

{ WorkcenterID = 1, WorkcenterName = "1 (One)" }, 
{ WorkcenterID = 2, WorkcenterName = "2 (Two)" } 

而值1現在顯示「1(一)」而不是「一」。

+0

我不明白是什麼意思「TextOfSelectedItem」我只想在Grid中插入兩個值FK我該怎麼做,請詳細解釋 – Simo