Весенняя нумерация страниц - PullRequest
0 голосов
/ 13 мая 2011

Здравствуйте, я использую jqgrid для своего проекта, и мне нужно было реализовать нумерацию страниц, поэтому я нашел код в php и скопировал его в java:

@RequestMapping(value = "getgriddata", method = RequestMethod.GET)
    public @ResponseBody
    String getGrid(@RequestParam("page") String page, @RequestParam("rows") int rownumber, @RequestParam("sidx") String sortBy, @RequestParam("sord") String sortOrder,@RequestParam(value = "_search") String search, @RequestParam(value="filters", required = false) String filters) {

        int totalCount = dao.getTotalRecordCount();

        CustomJsonResponse response = new CustomJsonResponse();

        int totalPages = 0;

        if (totalCount > 0) {
            totalPages = (int) Math.ceil(totalCount/rownumber);
        }

        if (Integer.valueOf(page) > totalPages) {
            page = String.valueOf(totalPages);
        }

        Gson jsonConverter = new Gson();

        int start = (rownumber * Integer.valueOf(page)) - rownumber;
        Filters searchFilter = null;

        if(Boolean.valueOf(search) == true){
            searchFilter = jsonConverter.fromJson(filters, Filters.class);
        }

        // Retrieve records from database
        List<Record> recorBatch = dao.getRecords(start, rownumber, sortBy, sortOrder, search, searchFilter);

        // Assign the result from the service to this response
        response.setRows(recorBatch);
        response.setTotal(String.valueOf(totalPages));
        response.setRecords(String.valueOf(stagingLoadBatch.size()));
        response.setPage(page);

        return jsonConverter.toJson(response);
    }

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

http://pastebin.com/ybKSXzyq

Кто-нибудь может предложить лучшее решение для этого?

Ответы [ 3 ]

3 голосов
/ 13 мая 2011

Я бы посоветовал вам взглянуть на Display Tag Library для разбивки на страницы.

0 голосов
/ 24 октября 2017

Это мой результат pangination в Spring MVC
image1

image2

image3

0 голосов
/ 01 мая 2013

Я делаю полную реализацию этого, я сделал класс JQGridPage.java, чтобы содержать данные для jqgrid как

public class JQGridPage<T> {

    private Integer page;
    private Integer total;
    private Long records;
    private List<T> rows;
....
}

и в методе контроллера я заполняю его и отправляю как возврат метода

@RequestMapping(value = "", method = RequestMethod.GET, params = "page")
@ResponseBody
public JQGridPage<T> listPages(
        @RequestParam(value = "page", defaultValue = "1") int page,
        @RequestParam(value = "rows", defaultValue = "10") int rows,
        @RequestParam(value = "sidx", defaultValue = "id") String sortField,
        @RequestParam(value = "sord", defaultValue = "ASC") String sortDirection,
        @RequestParam(value = "searchField", defaultValue = "id") String searchField,
        @RequestParam(value = "searchOper", defaultValue = "eq") String searchOper,
        @RequestParam(value = "searchString", defaultValue = "") String searchString) {
.....
    JQGridPage<T> jqGrid = new JQGridPage<T>();
    jqGrid.setPage(page);
    jqGrid.setTotal(pageOfCustomer.getTotalPages());
    jqGrid.setRecords(pageOfCustomer.getTotalElements());
    jqGrid.setRows(pageOfCustomer.getContent());
    return jqGrid;
}
...