Kendo Grid Ajax数据绑定

时间:2014-02-03 10:11:14

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

我正在尝试在ASP.NET MVC 5应用程序中实现Grid。我在剃刀中使用表来测试代码并正确地提取数据,但是我正在尝试使用提供的Kendo助手类进行服务器绑定,但我正在努力将数据拉到视图中。我正在使用Repository模式和UnitOfWork ....代码如下......

我的第二个问题是,这是在单视图中使用多个模型的最佳方法????我也有ViewModel,但我没有在下面的代码中使用..我可以在同一视图中使用@(Html.Kendo()。Grid()和@(Html.Kendo()。Grid()...非常感谢先进...

存储库类:

 public IEnumerable<FeeScheme> GetAllFeeScheme()
    {
        return getAllFeeSchemeFromRepository();
    }

UnitOfWork类

  private IEnumerable<FeeScheme> getAllFeeSchemeFromRepository()
    {
        IEnumerable<FeeScheme> query = new List<FeeScheme>();

        query = (from b in _FeeScheme_Repository.GetAll()
                 select b).ToList();

        return query;
    }

    public IEnumerable<FeeScheme> GetAllFeeScheme()
    {
        return getAllFeeSchemeFromRepository();
    }

控制器类

  public JsonResult GetAllFeeScheme([DataSourceRequest]DataSourceRequest request)
    {

        return Json(FeeScheme_UOF.GetAllFeeScheme().ToDataSourceResult(request));

    }

查看(剑道)

  @(Html.Kendo().Grid<DatabaseLayer.TableMappings.FeeScheme>()
        .Name("Grid")
        .Columns(columns =>
                 {
                     columns.Bound(c => c.FeeSchemeID);
                     columns.Bound(c=>c.FeeSchemeDescription);
                     columns.Bound(c => c.Fee);
                 })
                         .HtmlAttributes(new { style = "height: 380px;" })
            .Scrollable()
            .Groupable()
            .Sortable()
            .Pageable(pageable => pageable
                .Refresh(true)
                .PageSizes(true)
                .ButtonCount(5))
            .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("GetAllFeeScheme", "Qualification"))
                .Model(model => model.Id(c=>c.FeeSchemeID))
            )
        )

2 个答案:

答案 0 :(得分:1)

这是在单一视图中使用多个模型的最佳方式

首先,您可以使用一个包含您想要的列表的模型:

 public Model()
        {
        public Ilist < Model1 > Model1List
            {
                get;
                set;
            }
        public IList < Model2 > Model2List
            {
                get;
                set;
            }
        }

第二,你可以使用Tuple

答案 1 :(得分:1)

首先是简单的问题:要在一个视图中使用多个“视图模型”,您可以这样做:

public class TestViewModel
{
    public List<Object1> Object1List { get; set; }
    public List<Object2> Object2List { get; set; }

    public TestViewModel()
    {
        Object1List = new List<Object1>();
        Object2List = new List<Object2>();
    }
}

然后使用TestViewModel作为视图的模型。

就将网格更改为服务器绑定而言,它看起来像这样:

@(Html.Kendo().Grid<>(Model.Object1List)
    .Name("Grid")
    .Columns(columns =>
             {
                 columns.Bound(c => c.FeeSchemeID);
                 columns.Bound(c=>c.FeeSchemeDescription);
                 columns.Bound(c => c.Fee);
             })
                     .HtmlAttributes(new { style = "height: 380px;" })
        .Scrollable()
        .Groupable()
        .Sortable()
        .Pageable(pageable => pageable
            .Refresh(true)
            .PageSizes(true)
            .ButtonCount(5))
        .DataSource(dataSource => dataSource
            .Server()
            .Model(model => model.Id(c=>c.FeeSchemeID))
        )
    )