如何使用Razor MVC-4将JSON数据加载到SlickGrid中

我是jquery,光滑网格和razor的新手。 我已经浏览了SlickGrid示例,并且能够将静态数据加载到SlickGrid中。 现在我正在尝试将MSSQL中的JSON数据加载到我的SlickGrid中。 我在网上看到了一些例子,但我相信我错过了那些例子中没有提到的东西。

这是我的代码。

SlickGridProducts.js var grid;

var columns = [ { id: "ProductID", name: "ProductID", field: "ProductID", width: 50 }, { id: "ItemDesc", name: "ItemDesc", field: "ItemDesc", width: 200 }, { id: "DivName", name: "DivName", field: "DivName", width: 50 }, { id: "DeptDesc", name: "DeptDesc", field: "DeptDesc", width: 75 }, { id: "ClassDesc", name: "ClassDesc", field: "ClassDesc", width: 100 }, { id: "SubClassDesc", name: "SubClassDesc", field: "SubClassDesc", width: 100 } ]; var options = { editable: true, enableAddRow: true, enableCellNavigation: true, asyncEditorLoading: false, autoEdit: false }; $(function () { var slickdata = []; $.getJSON("/Products/GetSlickGridData", function (items) { for (var i = 0; i < items.length; i++) { slickdata[i] = { ProductID: items[i].ProductID, ItemDesc: items[i].ItemDesc, DivName: items[i].DivName, DeptDesc: items[i].DeptDesc, ClassDesc: items[i].ClassDesc, SubClassDesc: items[i].SubClassDesc }; } }); grid = new Slick.Grid("#myGrid", slickdata, columns, options); grid.setSelectionModel(new Slick.RowSelectionModel()); grid.setActiveCell(0, 0); }) 

产品/ Index.cshtml

 @model IEnumerable @{ ViewBag.Title = "Index"; }       

Index

ProductsController.cs

 using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Web; using System.Web.Mvc; using JQGrid.Models; namespace JQGrid.Controllers { public class ProductsController : Controller { private ProductPickerEntities db = new ProductPickerEntities(); // // GET: /Products/ public ActionResult Index() { return View(db.Products.ToList()); } ... public JsonResult GetSlickGridData() { var slickGridData = db.Products.ToList(); return Json(slickGridData, JsonRequestBehavior.AllowGet); } } } 

如果我在JsonResult GetSlickGridData()中添加断点并观察slickGridData,我会看到它在我的slickgrid中填充了我想要的所有项目。

有了这一切,我得到的是一个空白的白色盒子,用于我的光滑网格。 我认为问题出在我的js中,我正在填充slickdata,但不知道要修复什么。

** * *修订版* ****

我找到了一个问题,但是滑板仍然是空白的。 我的问题是返回的json结果太大了。 所以我现在修改了我的ProductsController.cs代码

 public JsonResult GetSlickGridData() { var slickGridData = db.Products.ToList(); var jsonResult = Json(slickGridData, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return jsonResult; } 

这解决了maxlength错误,尽管我认为这在MVC-4中得到了解决。

您是否检查了浏览器控制台是否有错误?

你正在初始化grid.setSelectionModel(new Slick.RowSelectionModel()); ,但没有包含对它的引用。

它是slick.rowselectionmodel.js ,通常位于Plugins文件夹下。