【问题标题】:How to load JSON data into SlickGrid with Razor MVC-4如何使用 Razor MVC-4 将 JSON 数据加载到 SlickGrid 中
【发布时间】:2023-03-24 23:59:01
【问题描述】:

我是 jquery、slick grid 和 razor 的新手。我已经浏览了 SlickGrid 示例,并且能够将静态数据加载到 SlickGrid 中。现在我正在尝试将 JSON 数据从 MSSQL 加载到我的 SlickGrid 中。我在网上看过一些示例,但我相信我遗漏了这些示例中未提及的内容。

这是我的代码。

SlickGridProducts.js 变量网格;

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<JQGrid.Models.Product>

@{
    ViewBag.Title = "Index";
}

<link href="@Url.Content("~/Content/slick.grid.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.event.drag.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/SlickGrid/slick.core.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/SlickGrid/slick.grid.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/SlickGridProducts.js")" type="text/javascript"></script>

<h2>Index</h2>

<div id="myGrid" style="width:800px;height:300px;"></div>

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 中的所有项目。

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

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

我发现了我的一个问题,但 slickgrid 仍然是空白的。我的问题是返回的 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 中解决。

【问题讨论】:

  • 您检查浏览器控制台是否有错误?
  • 浏览器控制台中唯一的错误是时间戳:2013 年 3 月 11 日上午 11:33:10 错误:错误:SlickGrid 的 'enableColumnReorder = true' 选项需要加载 jquery-ui.sortable 模块 来源档案:localhost:62378/Scripts/SlickGrid/slick.grid.js线路:212
  • 一旦我为 jquery-ui-1.10.1.custom.js 添加了脚本(包括可排序的),它就会显示网格和我的数据。
  • Romoku - 如果您将此标记为答案,我可以检查一下。

标签: c# json razor asp.net-mvc-4 slickgrid


【解决方案1】:

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

【讨论】:

  • 浏览器错误控制台显示了一个 js 包含我缺少的 slickgrid 工作 jquery-ui-1.10.1.custom.js
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    相关资源
    最近更新 更多