2016-11-21 15 views
1

同じビューで複数のモデルのグリッドを複数持つことができます。同じビュー内の異なるモデルの複数のグリッド

剣道のグリッドがどのように機能するのかよく分かりません。 事は私が1つのモデルの1つのグリッドを持っているとき、グリッドは常に私のビューに何かを表示します。これは私がグリッドを1つしか使用しないときは私のグリッドです。

HTMLで

@model IEnumerable<CampeonatoFutbol.Models.PartidoClub> 
@(Html.Kendo().Grid(Model) 
    .Name("grid") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.ClubDesc).Title("EQUIPO").Width(220); 
     columns.Bound(c => c.PrtidoCodigo).Title("PJ").Width(60); 
     columns.Bound(c => c.GolesClub).Title("GC").Width(60); 
     columns.Bound(c => c.PuntosClub).Title("PUNTOS").Width(150); 
    }) 
    .HtmlAttributes(new { style = "height: 300px;" }) 
    .Scrollable() 
    .Reorderable(reorder => reorder.Columns(true)) 
    .Pageable(pageable => pageable 
     .PageSizes(true)) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .PageSize(20) 
    ) 

このグリッドは、readメソッドのアクションを持っていないが、それは、コントローラのこのメソッドはアクションを呼び出すです:

public ActionResult Campeonato() 
{ 
    return View(list); // i return a list that is showing in the grid 
} 

問題は、私がこのような別のモデルの別のグリッドを表示しようとしたときです:

@(Html.Kendo().Grid<CampeonatoFutbol.Models.Player>() 
    .Name("gridGoleadores") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.NombreJugador).Title("JUGADOR").Width(220); 
     columns.Bound(c => c.ClubDesc).Title("EQUIPO").Width(60); 
     columns.Bound(c => c.GolesJugador).Title("GOLES").Width(60); 
    }) 
    .HtmlAttributes(new { style = "height: 300px;" }) 
    .Scrollable() 
    .Reorderable(reorder => reorder.Columns(true)) 
    .Pageable(pageable => pageable 
    .PageSizes(true)) 
    .DataSource(dataSource => dataSource 
     .Ajax()   
     .Read(read => read.Action("GoleadoresCampeonato", "Campeonato")) 
     .PageSize(20) 
     ) 
    ) 

このグリッドには、コントローラでは決して呼び出されないメソッドアクションがあります。 これは、私はこのグリッドに戻りたいリストを持つコントローラです。

public ActionResult GoleadoresCampeonato() 
{ 
    return View(anotherList); 
} 

私もこの方法を試してみましたが、それは動作しません:

public ActionResult GoleadoresCampeonato([DataSourceRequest]DataSourceRequest request) 
{ 
    return Json(anotherList.ToDataSourceResult(request)); 
} 

のみ第1グリッドが表示されています私は何か、私は他のグリッドにも私に何かを見せたい。

どうすればこの問題を解決できますか?あなたはそれがそのためのコードの下にチェックするための一つのビューモデルを作成する必要が

答えて

0

public partial class MasterModel 
    { 

//For single 
     public virtual Player Player{ get; set; } 

     public virtual PartidoClub PartidoClub{ get; set; } 

//For List  
     public List<PartidoClub> liPartidoClub { get; set; } 

     public List<Player > liPlayer { get; set; } 


    } 


//Your Code On View 

@model Application.Model.MasterModel 

//For First Grid On Same View 

@(Html.Kendo().Grid(Model.liPartidoClub) 
.Name("grid") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.ClubDesc).Title("EQUIPO").Width(220); 
     columns.Bound(c => c.PrtidoCodigo).Title("PJ").Width(60); 
     columns.Bound(c => c.GolesClub).Title("GC").Width(60); 
     columns.Bound(c => c.PuntosClub).Title("PUNTOS").Width(150); 
    }) 
    .HtmlAttributes(new { style = "height: 300px;" }) 
    .Scrollable() 
    .Reorderable(reorder => reorder.Columns(true)) 
    .Pageable(pageable => pageable 
     .PageSizes(true)) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .PageSize(20) 
    ) 
) 

//For Second Grid On Same View 

@(Html.Kendo().Grid<Model.liPlayer>() 
    .Name("gridGoleadores") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.NombreJugador).Title("JUGADOR").Width(220); 
     columns.Bound(c => c.ClubDesc).Title("EQUIPO").Width(60); 
     columns.Bound(c => c.GolesJugador).Title("GOLES").Width(60); 
    }) 
    .HtmlAttributes(new { style = "height: 300px;" }) 
    .Scrollable() 
    .Reorderable(reorder => reorder.Columns(true)) 
    .Pageable(pageable => pageable 
    .PageSizes(true)) 
    .DataSource(dataSource => dataSource 
     .Ajax()   
     .Read(read => read.Action("GoleadoresCampeonato", "Campeonato")) 
     .PageSize(20) 
     ) 
    ) 

希望このコードがお手伝いします!

関連する問題