12

我正在寻找一个关于如何在尝试通过 jQuery.Ajax 将数据检索为 JSon 时使用 SlickGrid 的简单示例。我也找不到 SlickGrid 插件的任何文档,并且想知道我是否只是在错误的地方寻找。任何让我开始使用 SlickGrid 的帮助将不胜感激。

4

4 回答 4

13

SlickGrid 存储库中的 AJAX 示例非常复杂,因为它试图在缓存等方面变得棘手。例如,它跟踪所有已发送的行,并且只会从服务器请求新行。对于 Digg 故事的特定示例,它也进行了硬编码。文档非常缺乏,而且 jQuery 的 1.5+ 版本似乎有问题(它改变了 ajax 的处理方式)。

使用 SlickGrid 的 Andrew Childs fork 让我更容易上手,它在 README 的底部包含了关于如何使用 AJAX 的非常简单直接的说明:

存储库位于https://github.com/andrewchilds/SlickGrid

于 2011-04-18T23:11:19.977 回答
6

asp.net 页面中的示例。WebmyData服务返回一个需要匹配网格列的 json 字符串。

$(function () {

        $.ajax({
            url: "WS.asmx/myData",
            global: false,
            type: "POST",
            data: "{}",
            contentType: "application/json",
            dataType: "json",
            async: false,
            success: function (json) {
                data = eval('(' + json.d + ')');
                if (!data) { alert('no data'); };
            },
            error: function (msg) {
                var errorText = eval('(' + msg.responseText + ')');
                alert('Error : \n--------\n' + errorText.Message);
            }
        }

        );

 if (data) {
    dataView = new GridNic.Data.DataView();
    grid = new GridNic.Grid($("#myGrid"), dataView.rows, columns, options);
    var pager = new GridNic.Controls.Pager(dataView, grid, $("#pager"), columns);
    var columnpicker = new GridNic.Controls.ColumnPicker(columns, grid, options);

... 等等


在 Asp.Net 中,默认情况下会限制 json 字符串的大小。如果出现问题,您必须在 web.config 中声明更大的尺寸,例如:

<system.web.extensions>
  <scripting>
    <webServices>
        <jsonSerialization maxJsonLength="5000000">
        </jsonSerialization>
    </webServices>
  </scripting>
</system.web.extensions>
于 2011-06-07T07:52:31.423 回答
2

看看这个例子

如果 SlickGrid 缺少示例,请查看jqgrid

于 2011-02-13T12:43:24.017 回答
0

解决方案很简单,但他们没有在他们的 wiki 页面上明确说明如何做到这一点。

SlickGrid 期望 JSON 是对象形式。因此,如果出于任何原因它是字符串形式,只需使用:

JSON.parse(jsonString);

如果您从 ajax 加载,只需执行以下操作:

$.getJSON("file.json", function(data) {
    grid = new Slick.Grid("#myGrid", data, columns, options);
}
于 2015-04-13T15:39:34.907 回答