This post描述了一个问题,即来自SQL的数据未在MVC应用程序的SlickGrid中显示。我有相同的问题。当我导航到www.example.com/aqi/Products/Index时,会显示SlickGrid,但不显示SQL中article_creator列的数据。
“Web检查器网络”选项卡显示应该出现在SlickGrid中的SQL的article_creator列中的数据。在这个例子中,文本"测试"应该出现在SlickGrid中。
在另一篇文章中,解决方案是检查Web Inspector控制台是否有错误。我的浏览器Web Inspector控制台没有错误,因此我不确定下一步该做什么。
控制器/ AppController.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using aqi.Models;
namespace aqi.Controllers
{
public class ProductsController : Controller
{
public ActionResult Index()
{
return View(db.Products.ToList());
}
public JsonResult GetSlickGridData()
{
var slickGridData = db.Products.ToList();
var jsonResult = Json(slickGridData, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
}
}
脚本/ SlickGridProducts.js
var grid;
var columns = [
{ id: "article_creator", name: "article_creator", field: "article_creator", width: 100 }
];
var options = {
editable: true,
enableAddRow: true,
enableCellNavigation: true,
asyncEditorLoading: false,
autoEdit: false
};
$(function () {
var slickdata = [];
$.getJSON("/aqi/Products/GetSlickGridData", function (items) {
for (var i = 0; i < items.length; i++) {
slickdata[i] = {
article_creator: items[i].article_creator
};
}
});
grid = new Slick.Grid("#myGrid", slickdata, columns, options);
})
查看/产品/ Index.cshtml
<link href="@Url.Content("~/Content/slick.grid.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/smoothness/jquery-ui-1.8.16.custom.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/slick.core.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/slick.grid.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/SlickGridProducts.js")" type="text/javascript"></script>
<div id="myGrid"></div>
答案 0 :(得分:2)
您需要将网格初始化放在$.getJSON
回调中,因为它是异步的。 e.g。
$(function () {
var slickdata = [];
$.getJSON("/aqi/Products/GetSlickGridData", function (items) {
for (var i = 0; i < items.length; i++) {
slickdata[i] = {
article_creator: items[i].article_creator
};
}
grid = new Slick.Grid("#myGrid", slickdata, columns, options);
});
})
或者,如果您想事先显示没有数据的网格,并在提取数据后稍后刷新,那么。
$(function () {
var slickdata = [];
grid = new Slick.Grid("#myGrid", slickdata, columns, options);
$.getJSON("/aqi/Products/GetSlickGridData", function (items) {
for (var i = 0; i < items.length; i++) {
slickdata[i] = {
article_creator: items[i].article_creator
};
}
//set the new data here and invalidate the grid
grid.setData(slickdata);
grid.invalidate();
});
})
注意:我刚注意到图像中有2个空行。自设置enableAddRow:true
以来,我认为1来自有效的数组项而另一个是新行。只有在列field
属性`或不正确的数据集上存在拼写错误时才会出现这种情况。