jqGrid с ASP.NET MVC3 снова? - PullRequest
       1

jqGrid с ASP.NET MVC3 снова?

0 голосов
/ 25 ноября 2011

Я думал, что отсортировал эту вещь, но я пытаюсь использовать jqGrid в другом приложении, и он не хочет работать. Он даже не пойдет на упомянутый URL. Он даже не отобразит строку пустых записей, только пустую сетку.
Это то, что я имею в представлении

$("#list").jqGrid({
            url: '/Customers/MyAccount/GetEnhancementRequests',
            datatype: 'json',
            type: 'POST',
            colNames: ['ID', 'Requested By', 'Requested Date', 'Details', 'Progress'],
            colModel: [
            { name: 'Id', index: 'ID', key: true, width: 55 },
            { name: 'CustomerName', index: 'CustomerName', width: 50 },
            { name: 'requestDate', index: 'requestDate', width: 50 },
            { name: 'details', index: 'details', width: 50 },
            { name: 'progress', index: 'progress', width: 50 }
            ],
            pager: $("#pager"),
            rowNum: 2,
            rowList: [2, 10, 50, 100, 200],
            sortname: 'ID',
            viewrecords: true,
            sortorder: 'desc',
            caption: 'Enhancement Requests',
            imgpath: '/Content/images',
            width: 1000,
            height: 500,
            emptyrecords: 'No enhancements have been submitted',
            jsonReader: { repeatitems: false }
        });


        $("#list").jqGrid('navGrid', '#pager',
         { edit: false, add: false, del: false },
         {},
         {},
         {},
         { multipleSearch: true, multipleGroup: true }
         );

И я изменил свое действие контроллера, чтобы просто быть этим

[HttpPost]
public JsonResult GetEnhancementRequests(string sidx, string sord, int page, int rows, bool _search, string filters) 
        {
            var jsonData = new
            {
                total = 1,
                page = page,
                records = 1,
                rows = (
                     new { 
                         id = 1,
                         cell = new string[]{
                            "1", "RequestedBy", DateTime.Now.ToShortDateString(), "Lots of details", "and even some progress"}                        
                     })
            };
            return Json(jsonData );  
        }

У меня есть точки останова в действии контроллера, но это даже не входит в метод. Есть идеи?

Изменить: Забыл добавить, у меня есть следующая ссылка на сценарии. Как видите, у меня есть все необходимые файлы

<link href="../../../../Scripts/css/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" />
<link href="../../../../Scripts/css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<link href="../../../../Scripts/ui.multiselect.css" rel="stylesheet" type="text/css" />

<script src="../../../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery-ui-1.8.15.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/grid.locale-en.js" type="text/javascript"></script>
<script src="../../../../Scripts/ui.multiselect.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>  
<script src="../../../../Scripts/jquery.tablednd.js" type="text/javascript"></script>

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

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

  • Вы должны удалить jsonReader: { repeatitems: false } параметр из определения jqGrid, если вы используете формат rows с элементами, имеющими свойства {id, cell}, где cell - это массив строк.
  • Вы должны включать каждый файл JavaScript только один раз . В настоящее время вы включаете как jquery-ui-1.8.15.min.js, так и jquery-ui-1.8.16.custom.min.js. Вы должны удалить jquery-ui-1.8.15.min.js. Таким же образом файл jquery.tablednd.js уже включен в jquery.jqGrid.min.js в свернутом виде. Вы должны удалить jquery.tablednd.js.

Некоторые другие вещи не являются ошибками, а просто рекомендацией:

  • Параметр imgpath не существует в jqGrid уже много лет. Вы использовали, вероятно, какой-то ретро пример в качестве шаблона. Включение параметра imgpath: '/Content/images' делает то же самое, что и включение blaBla: 'HaHa': ничего не происходит. Таким образом, вы должны удалить imgpath: '/Content/images'.
  • Вы должны заменить pager: $("#pager") на pager: "#pager". Выражение $("#pager") означает выбор элемента DOM на странице, имеющей id="page", и создание оболочки jQuery для элемента DOM. jqGrid нужно знать только идентификатор пейджера . Поэтому, если значение параметра pager будет не строкой, а элементом jQuery, то вместо jqGrid просто получите атрибут id из элемента и измените значение параметра pager на строку '#' + id. Лучше использовать параметр pager непосредственно в форме `pager:" #pager ".
  • Рекомендую посмотреть ОБНОВЛЕННУЮ часть ответа . Он содержит код, который пересылает сообщения об ошибках в jqGrid, исправляет некоторые проблемы CSS в случае использования jqGrid с ASP.NET MVC 2 или 3 и показывает, как использовать подкачку, сортировку и фильтрацию данных в случае Entity Framework. Так что это может быть интересно для вас. Вы можете скачать демонстрационный проект по ссылке из «ОБНОВЛЕНО 2» (в конце) ответа.
0 голосов
/ 25 ноября 2011

Спасибо за ваш вклад.Оказывается, у меня была ошибка, хорошо.Я вызывал тип вместо mtype, а jqGrid ничего не делал с указанным URL.После того, как я это исправил, теперь он работает нормально.

Спасибо за ссылки на imgpath и пейджер, кстати.Ценю это Спасибо

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