jqgrid подкачка на стороне сервера java - PullRequest
1 голос
/ 15 февраля 2012

Я пытаюсь добавить серверную сортировку в свою сетку, поэтому я добавил это:

onPaging : function(which_button) {
                 _$("#myGrid").setGridParam({datatype: "xml"});
                _$("#myGrid").trigger('reloadGrid');
            }

и когда я нажимал кнопку следующей страницы, он переходил на мой сервер и снова загружал сетку, поэтому я снова вижу записи с первой страницы. мой вопрос, как мне соединить данные о записях сетки и моем сервере? Есть ли полный пример подкачки на стороне сервера? что еще мне нужно передать в мой серверный порядок, чтобы получить точные записи для следующей страницы? Что мне нужно добавить на мою веб-страницу и что на страницу сервера?

Любая помощь будет оценена,

Заранее благодарен.

1 Ответ

1 голос
/ 16 февраля 2012

Пожалуйста, подтвердите, выполняете ли вы сортировку на стороне сервера или подкачку на стороне сервера. Из этого вопроса я понимаю, что вы пытаетесь получить данные следующей страницы с сервера нажатием кнопки «Далее» / «Предыдущая» в сетке. Если ваша цель - просто получить данные подкачки, то поможет логика ниже. Если вас интересует сортировка на стороне сервера + подкачка на стороне сервера, для этого необходимо использовать аналогичный подход.

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

Вам не нужна функция onPaging :. Просто настройте подкачку: достаточно будет true.

В java-классе есть следующие переменные с getter и setter

// Total pages
    private Integer total = 0;
     //get how many rows we want to have into the grid - rowNum attribute in the grid
    private Integer rows = 0;
    //Get the requested page. By default grid sets this to 1.
    private Integer page = 0;
    // All Record
    private Integer records = 0;
    // sorting order ascending or descending
    private String sord;
    // get index row - i.e. user click to sort
    private String sidx;
/**
     * @return the total
     */
    public Integer getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(Integer total) {
        this.total = total;
    }

    /**
     * @return the rows
     */
    public Integer getRows() {
        return rows;
    }

    /**
     * @param rows the rows to set
     */
    public void setRows(Integer rows) {
        this.rows = rows;
    }

    /**
     * @return the page
     */
    public Integer getPage() {
        return page;
    }

    /**
     * @param page the page to set
     */
    public void setPage(Integer page) {
        this.page = page;
    }

    /**
     * @return the records
     */
    public Integer getRecords() {
        return records;
    }

    /**
     * @param records the records to set
     */
    public void setRecords(Integer records) {
        this.records = records;

        if(this.records > 0 && this.rows > 0){
            this.total = (int)Math.ceil((double) this.records/(double) this.rows);
        }else{
            this.total = 0;
        }
    }

    /**
     * @return the sord
     */
    public String getSord() {
        return sord;
    }

    /**
     * @param sord the sord to set
     */
    public void setSord(String sord) {
        this.sord = sord;
    }

    /**
     * @return the sidx
     */
    public String getSidx() {
        return sidx;
    }

    /**
     * @param sidx the sidx to set
     */
    public void setSidx(String sidx) {
        this.sidx = sidx;
    }

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

// Предполагается, что у вас есть 1000 записей. Это должно быть установлено динамически. В настоящее время он жестко запрограммирован на 1000.

setRecords(1000);
// for first time when we have page=0, it should 
// be page =1;
// If last page is required and if page no crosses total count
                int displayCount = count/rows;
                int remainder = count%rows;
                page = (page<=displayCount?page:count==0?0:remainder==0?displayCount:displayCount+1);


                int to = (getRows() * getPage());
                int from = to - getRows();

                if (to > getRecords()) to = getRecords();

                if (from > to) {
                    from = 0;
                    page = 1;
                }

setTotal((int) Math.ceil((double) getRecords() / (double) getRows()));

                if(getTotal() == 0) page =0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...