jqGrid и JSON - пустая сетка - PullRequest
0 голосов
/ 01 декабря 2011

Я, должно быть, упускаю что-то простое здесь.Я изучил все примеры и скопировал соответствующий код, но я не могу получить данные JSON для отображения в jqGrid - я просто получаю пустую сетку с заголовками.Я был бы признателен другим, чтобы помочь мне понять, что не так.Спасибо.

Вот HTML-файл, который я использую:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/redmond/jquery-ui.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="/Styles/ui.jqgrid.css" />
    <script src="/Scripts/jquery-1.5.2.min.js" type="text/javascript"></script>
    <script src="/Scripts/i18n/grid.locale-en.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        jQuery(document).ready(function () {
            $('#list').jqGrid({
                dataType: "jsonstring",
                datastr: mydata1,
                contentType: "application/json; charset=utf-8",
                colNames: ['Id1', 'Name1', 'Values1'],
                colModel: [
                    { name: 'id1', index: 'id1', width: 55 },
                    { name: 'name1', index: 'name1', width: 80, align: 'right', sorttype: 'string' },
                    { name: 'values1', index: 'values1', width: 80, align: 'right', sorttype: 'string'}],
                pager: jQuery('#pager'),
                rowNum: 5,
                rowList: [10, 20, 30],
                viewrecords: true,
                caption: 'jqGrid First Grid',
                width: 300
            });
        });
        var mydata1 = '{ "page": "1", "total": 1, "records": "4", "rows": [{ "id": 1, "cell": ["1", "cell11", "values1"] }, { "id": 2, "cell": ["2", "cell21", "values1"] }, { "id": 3, "cell": ["3", "cell21", "values1"] }, { "id": 4, "cell": ["4", "cell21", "values1"] } ]'
    </script>
</head>
<body>
    <table id="list" class="scroll" cellpadding="0" cellspacing="0"> 
    </table> 
    <div id="pager" class="scroll" style="text-align: center;"> 
    </div> 
</body>
</html>

1 Ответ

2 голосов
/ 01 декабря 2011

В вашем коде есть как минимум две ошибки:

  1. Вы используете dataType вместо datatype.Поэтому неизвестная опция dataType: "jsonstring" будет игнорироваться и будет использоваться опция по умолчанию datatype: "xml" и url: "".Таким образом, данные не будут загружены.
  2. В ваших данных JSON нет '}' в конце строки.Поэтому вы используете неверные данные JSON.

Некоторые другие замечания.

  • Никакого параметра contentType не существует.Это будет проигнорировано.
  • Лучше определить mydata1 внутри (в начале) jQuery(document).ready(function () {/*here*/});.В случае, если у вас не будет глобальных переменных, которые являются медленными и могут конфликтовать с другими глобальными переменными.
  • Лучше использовать pager: '#pager' вместо pager: jQuery('#pager')
  • Вы можете удалить class="scroll" cellpadding="0" cellspacing="0" атрибуты элемента <table> и class="scroll" style="text-align: center;" атрибуты <div id="pager">

См. демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...