8

Ho creato l'applicazione asp.net MVC 4 in cui sto utilizzando l'entità framework e la classe "Data" è il modello.Come collegare la griglia Kendo in asp.net MVC 4 Razor

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

Ora voglio visualizzare i dati della tabella sulla griglia di kendo. Nel controllore, sto usando il seguente codice:

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

ora non ho idea per la visualizzazione dei dati in Kendo griglia (Sono nuovo di kendo e MVC). Ho anche provato quanto segue ma non funziona:

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

risposta

12

risposta Finalmente:

Vista:

@(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); 
     } 

Modello:

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; } 
    } 
+0

cosa succede se questo è in fase di inizializzazione jquery? – Samra

4

se il nome del controller sono dati quindi è possibile utilizzare il seguente

il modello

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)); 
     } 
    } 

tuo View solo è necessario aggiungere il seguente assumendo che il modello dispone di una chiave denominata 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")))) 
+0

'. Leggi (leggi => read.Action (" Index "," Data "))))" Credo che invece di 'index' dovrebbe essere' ReadDegrees'? – Steve

+0

sì hai ragione – Monah

+0

sto ricevendo errore su 'Html.KendoGrid' Htmlhelper non contiene la definizione di 'Kendo' .. ma ho aggiunto il riferimento di' Kendo.MVC.dll' in web.config di entrambi Visualizza così come Progetto anche. Sapevi come rimuovere l'errore. – Steve

Problemi correlati