2016-09-22 2 views
1

Я создаю igGrid со страничным поисковым сервером. Сетка привязана к контроллеру OData v3, который был автоматически сгенерирован Visual Studio с использованием Entity Framework. Операции фильтрации и сортировки работают нормально, но пейджинг - нет.igGrid с страничным страничным сервером не работает

Проблема заключается в том, что сетка помещает страницы page = x и pageSize = y в строку запроса, но формат OData равен $ top = x и $ skip = y. Обратите внимание, что изменение только страницы имен и pageSize недостаточно, потому что значение $ skip должно быть индексом * pageSize. Я попробовал несколько способов редактирования контроллера для поддержки страницы и pageSize, но безрезультатно.

Я могу вручную вводить URL-адреса запроса OData, которые имеют $ top и $ skip в адресной строке браузера и получать желаемые результаты. Есть ли способ заставить Grid использовать $ top и $ skip? Сама сетка определена в контроллере C# и передается на страницу как часть модели, и я заметил, что из-за этого я не могу получить доступ к свойствам pageIndexUrlKey и pageSizeUrlKey объекта GridPaging. Значение grid.OData равно true.

+2

По умолчанию пейджинг должен отправить строку запроса OData, используя $ top и $ skip. Можете ли вы опубликовать конфигурацию igGrid. –

+0

GridModel grid = new GridModel(); grid.EnableUTCDates = true; grid.ID = "membersGrid"; grid.FixedHeaders = false; grid.DefaultColumnWidth = "100px"; #области [пейджинг] GridPaging paging = new GridPaging(); paging.Type = OpType.Remote; paging.PageSize = 10; paging.CurrentPageIndex = 0; paging.PageSizeList = новый Список {10, 25, 50, 100}; grid.Features.Add (пейджинг); #endregion grid.DataSourceUrl = "/ odata/viewMemberBalances"; grid.ResponseDataKey = "value"; grid.OData = true; –

+0

Благодарим вас за ответ. Это приводит к тому, что сетка использует правильные параметры строки запроса, однако есть еще 2 проблемы: 1) Когда страница сначала загружается, сетка делает вызов с параметрами запроса страницы и страницы, а это приводит к отображению каждой записи до тех пор, пока страница размер изменяется пользователем. 2) в строке запроса отсутствует параметр $ inlinecount = allpages, поэтому мой контроллер не указывает сетке, есть больше записей, и пользователю отображается только 1 страница. Я подтвердил, что вручную добавление $ inlinecount = allpages в строку запроса возвращает счетчик. –

ответ

1

По умолчанию Сетка MVC Helper Упаковочный явно устанавливает pageSizeUrlKey и pageIndexUrlKey пользовательских параметров запроса: pageSize и page. Чтобы заставить его отправлять параметры OData, вы должны установить pageSizeUrlKey и pageIndexUrlKey null в JavaScript. Поместите следующий код в нижней части страницы:

$(function() { 
     $("#grid1").on("iggriddatabinding", function (evt, ui) { 
      var features = ui.owner.options.features, i; 
      for (var i = 0; i < features.length; i++) { 
       if (features[i].name === "Paging") { 
        features[i].pageSizeUrlKey = null; 
        features[i].pageIndexUrlKey = null; 
       } 
      } 
     }); 
    }); 

Вы должны поставить этот код перед конфигурацией сетки MVC, поскольку событие вызывается при создании сетки, и вы должны привязаться к нему, прежде чем сетка создано.

+0

Еще раз спасибо за ответ. Обновленный код позволяет сетке правильно отображать загрузку первой страницы, однако это не добавляет $ inlinecount = allpages к строке запроса, поэтому сетка показывает только первую страницу результатов и не предлагает больше. Насколько я могу судить, это единственная проблема. –

Смежные вопросы