同一视图中的多个不同模型的网格

时间:2016-11-21 00:01:43

标签: c# asp.net-mvc kendo-grid

如何在同一视图中拥有多个不同模型的网格。

我不太了解剑道的网格是如何工作的。 问题是,当我有一个模型的网格时,网格总是在视图中显示一些东西。当我只使用一个网格时,这是我的网格。

在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)
    )

此网格没有读取方法操作,但它调用控制器的此方法操作:

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 :(得分: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)
        )
    )

希望此代码能为您提供帮助!!