简体   繁体   English

如何在asp.net MVC 4 Razor中绑定Kendo Grid

[英]How to bind the Kendo Grid in asp.net MVC 4 Razor

I have create the asp.net MVC 4 application where i am using the entity framework and class "Data" is the model. 我已经创建了asp.net MVC 4应用程序,其中我使用的是实体框架,类“Data”就是模型。

AdventureWorksTrainingEntities _dbContext = new AdventureWorksTrainingEntities();
Data _data = new Data();  //Model

Now i want to display the data of the table to the kendo grid. 现在我想将表的数据显示到kendo网格。 In the controller, i am using the following code: 在控制器中,我使用以下代码:

 public ActionResult Index()
        {
           List<Movie> dataForGrid= _dbContext.Movies.ToList();
           return View(dataForGrid);
        }

Now i have no idea for displaying the data in Kendo Grid (i am new to kendo and MVC). 现在我不知道在Kendo Grid中显示数据(我是kendo和MVC的新手)。 I have also tried the following but not working: 我也试过以下但没有工作:

@model   IEnumerable<MvcApp.Models.Data>
@using Kendo.Mvc.UI 
@{
    ViewBag.Title = "Index";
}

<h2>Grid For Data</h2>
Html.Kendo().Grid<Order>()
    .Name("Grid")
    .DataSource(dataSource => dataSource // Not implemented
)

Finally got answer: 终于得到了答案:

View: 视图:

@(Html.Kendo().Grid<KendoUI.Models.EmployeeViewModel>()
            .Name("Grid")
            .Columns(columns =>
            {
                columns.Bound(p => p.name).Title("Name");
                columns.Bound(p => p.gender).Title("Gender");
                columns.Bound(p => p.designation).Title("Designation").Width("300px");
                columns.Bound(p => p.department).Title("Department").Width("300px");
            })

            .Editable(editable => editable.Mode(GridEditMode.InLine))
            .Navigatable() 
            .Pageable()
            .Sortable()
            .Scrollable()
            .DataSource(dataSource => dataSource // Configure the grid data source
            .Ajax()
            .Model(model =>
            {
                model.Id(x => x.id);
            })
                .Read(read => read.Action("Employee_Read", "Home")) // Set the action method which will return the data in JSON format  
             )
            )

Controller: 控制器:

 public ActionResult Employee_Read([DataSourceRequest]DataSourceRequest request)
        {
            IQueryable<Bhupendra_employees> Details = _dbContext.Bhupendra_employees;
            DataSourceResult result = Details.ToDataSourceResult(request, p => new EmployeeViewModel
                    {
                        id = p.id,
                        name = p.name,
                        gender = p.gender,
                        designation = p.designation,
                        department = p.Bhupendra_Dept.Dept_Description
                    });
            return Json(result, JsonRequestBehavior.AllowGet);
        }

Model: 模型:

public class EmployeeViewModel
    {
        public Int32 id { get; set; }
        public String name { get; set; }
        public String gender { get; set; }
        public String designation { get; set; }
        public String department { get; set; }
        //public DateTime dob { get; set; }
    }

if your controller name is Data then you can use the following 如果您的控制器名称是Data,那么您可以使用以下内容

Your Model 你的模特

 public ActionResult ReadDegrees([DataSourceRequest] DataSourceRequest request)
    {
        ViewBag.Countries = CommonController.CountryList();
        ViewBag.DegreeTypes = CommonController.DegreeTypeList();
        using (var _dbContext= new AdventureWorksTrainingEntities ())
        {
            return Json(_dbContext.Movies.ToList.ToDataSourceResult(request));
        }
    }

Your View Just you need to add the following assuming that your Model has a Key called ID 您的视图只需要添加以下内容,假设您的模型具有名为ID的密钥

Html.Kendo().Grid<Order>()
.Name("Grid")
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Model(model => model.Id(p => p.ID))
    .Read(read => read.Action("ReadDegrees", "Data"))))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM