2016-06-13 4 views
0

私はこの問題を解決するために疲れました。私はちょうど2つの値を表示したいと思います。たとえば、columns.Foreignkeyにあります。名前とIDを同じ列に表示します。これはどうすればいいですか? ForeignKeyの列がちょうどバインドリストから対応するWorkcenterCategoryID(ViewBag.WorkcenterCategory)に関連付けられているWorkcenterCategoryNameを表示している剣道に2つの値の外来キーを表示するグリッド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

返信してください。

だけ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はグリッドに「1」を表示します。

あなたがワークセンターの名前だけ以上のものを表示したい場合は、つまり、あなたが表示したいテキストにViewBag.WorkcenterCategoryリスト内のオブジェクトのWorkcenterNameを設定します。

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

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

そして、値1は「1」ではなく「1(1)」と表示されるようになりました。

+0

Heey私は "TextOfSelectedItem"という意味を理解していません。グリッドに2つの値FKを表示したいのですが – Simo

関連する問題