Kendo ui Grid mvc 与 sql 数据库

Posted

技术标签:

【中文标题】Kendo ui Grid mvc 与 sql 数据库【英文标题】:Kendo ui Grid mvc with sql database 【发布时间】:2014-08-05 16:25:01 【问题描述】:

我正在尝试为我在 SQL Server 中的驱动程序表创建一个网格视图。

这是我的课程:

Driver.cs:

public partial class Driver

        public Driver()
        
            this.CarsToDrivers = new HashSet<CarsToDriver>();
        

        public System.Guid Id  get; set; 
        public string Name  get; set; 
        public string FamilyName  get; set; 
        public string Licence  get; set; 
        public Nullable<short> ExperienceYears  get; set; 
        public int UserId  get; set; 

        public virtual ICollection<CarsToDriver> CarsToDrivers  get; set; 

CarsToDriver.cs:

 public partial class CarsToDriver
 
        public CarsToDriver()
        
            this.Role_TimeRestriction = new HashSet<Role_TimeRestriction>();
        

        public System.Guid Id  get; set; 
        public System.Guid CarId  get; set; 
        public System.Guid DriverId  get; set; 
        public string KilometersDriven  get; set; 

        public virtual Car Car  get; set; 
        public virtual Driver Driver  get; set; 
        public virtual Role_DayRestriction Role_DayRestriction  get; set; 
        public virtual ICollection<Role_TimeRestriction> Role_TimeRestriction  get; set; 
 

由于循环引用,我创建了一个 viewModel 类:

DriverViewModel.cs:

 public class DriverViewModel
 
      public DriverViewModel()
      
                this.CarsToDrivers = new HashSet<CarsToDriverViewModel>();
      

      public Guid  Id  get; set; 
      public String Name  get; set; 
      public String FamilyName  get; set; 
      public String Licence  get; set; 
      public short? ExperienceYears  get; set; 
      public int UserId  get; set; 

      public virtual ICollection<CarsToDriverViewModel> CarsToDrivers  get; set; 

我创建了一个控制器:

DriverController.cs:

public class DriverController : Controller

        private CarManagerDbEntities db = new CarManagerDbEntities();

        // GET: Driver
        public ActionResult Index()
        
            return View();
        

        public JsonResult Get([DataSourceRequest]DataSourceRequest request)
        
            var drivers = db.Drivers.Select(d => new DriverViewModel()
            
                ExperienceYears = d.ExperienceYears,
                Id = d.Id,
                UserId = d.UserId,
                Name = d.Name,
                FamilyName = d.FamilyName,
                Licence = d.Licence
            );

            return this.Json(drivers.ToDataSourceResult(request));
        

Index.cshtml:

@using CarManagerWebApplication.Models

    @(Html.Kendo().Grid<DriverViewModel>()
              .Name("Driver")
      .Columns(columns =>
      
          columns.Bound(o => o.Name);
          columns.Bound(o => o.FamilyName);
          columns.Bound(o => o.Licence);
          columns.Bound(o => o.ExperienceYears);
      )
      .DataSource( d => d
                .Ajax()
                .Read(r => r.Action("Get", "Driver")) )

      .Filterable()
      .Pageable()
      .Sortable()
      .Groupable()
      )

就像在本教程中一样:https://www.youtube.com/watch?v=3egh1pFjZ88

但我得到的结果没有条目。

更新

在调试时我得到了这个 javascript 错误:

11:57:12.6249: Referenced file 'jquery.validate.js' not found.
11:57:12.6249: Referenced file 'jquery.validate.unobtrusive.js' not found.
11:57:12.6249: Referenced file 'knockout-2.2.0.debug.js' not found.

我将丢失的文件添加到脚本文件夹,但我仍然收到此错误

我注意到我没有输入“Get”方法。 我做错了什么?

【问题讨论】:

调试代码时会发生什么?控制器是否被击中?您是否在控制台中收到 javascript 错误?如果不了解更多信息,则很难说出错误可能是什么,因为一切看起来都很好。 感谢您的回答,我更新了问题。 您是否尝试过使用 fiddler 来查看操作是否被调用?例如,您是否得到 404。此外,您在页面布局中包含了哪些脚本。也许你错过了一个。 【参考方案1】:

在您的控制器中,我认为您需要明确告诉它是 Get,因此您需要在方法名称 [GET] 上方添加,因为控制器操作实际上并未调用 Get(),因此它不知道您是尝试执行获取。

【讨论】:

以上是关于Kendo ui Grid mvc 与 sql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

MVC Grid 的 Kendo UI 如何隐藏 ID 列

设置 Kendo UI Grid Popup (MVC) 的宽度

MVC Kendo UI Grid = 自定义按钮无法返回选定的行 ID

asp.net mvc kendo ui grid 加密列数据

Kendo UI MVC Grid DataSourceRequest JavaScript 发布附加数据

Kendo UI MVC 从 MultiSelect 小部件将 Grid 绑定到 DataSource