2016-01-26 2 views
0

Я хотел реализовать функцию сортировки в сетке на уровне страницы. То есть, если у меня есть 100 записей и 10 записей отображаются на одной странице, имеющей 10 строк на каждой странице. Это означает, что у меня 10 страниц с 10 строками на каждой странице.Сортировка только строк текущей строки в jqgrid

Теперь проблема в том, что проблема. Если я отсортирую столбец с некоторым id в приведенном ниже коде, он будет сортировать все строки, и он покажет запись (99) на текущей странице, которая ранее отсутствовала (1).

Теперь, как я могу сортировать записи, которые присутствуют только на этой странице для кода ниже?

Пример: Если я применил сортировку по некоторому id в page1, то по возрастанию я должен отобразить некоторый идентификатор, содержащий от 1 до 10, и в порядке убывания он должен содержать от 10 до 1. Можем ли мы действительно добиться этого?

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

var myGrid = $("#mygrid").jqGrid({ 
        datatype: 'local', 
        colModel: [ 
         { name: 'AID', label: 'Some ID', key: true, width: 100, editable: false, sorttype: "int" }, 
         { name: 'Name', width: 300, editable: false }, 
         { name: 'Group', width: 100, editable: false }, 
         { name: 'Info', width: 100, editable: false }, 
         { name: 'AValue', width: 100, editable: true, edittype: 'text' } 
        ], 
        pager: '#mypager', 
        rowNum: 10, 
        rowList: [10, 20, 500], 
        viewrecords: true, 
        autowidth: true, 
        sortname: 'AID', 
        sortorder: 'desc' 
       }); 
       myGrid.jqGrid('navGrid','#mypager',{edit:false,add:false,del:false,search:false}); 

       var mydata = []; 
       for (var i = 0; i < 100; i++) { 
        mydata.push({AID:i,Name:"123",Group:"456",Info:"78",AValue:"8"}); 
       } 
       myGrid.setGridParam({data: mydata}).trigger("reloadGrid"); 

ответ

1

Рассматривали ли вы использование заднего конца для управления поисковым поиском и сортировкой?

Я использую SQL Server для этого, поэтому всегда отправляйте текущую страницу, pageSize, sortField, sortOder. Ниже приведен пример того же:

CREATE PROCEDURE [dbo].[usp_GetGroupsList] 

( @PageNum INT = 1, @PageSize INT = 10, @OrderField УАКСНАК (32) = 'ID',
@OrderDir УАКСНАК (8) = 'по возрастанию', @name NVARCHAR (100) = '', @description NVARCHAR (100) = '' ) КАК НАЧАТЬ SET NOCOUNT ON;

;WITH groupList AS (
    SELECT 
     RowNum = ROW_NUMBER() OVER(ORDER BY    
             CASE WHEN @OrderField = 'id' AND @OrderDir='asc' THEN g.Id END ASC,    
             CASE WHEN @OrderField = 'id' AND @OrderDir='desc' THEN g.Id END DESC, 

             CASE WHEN @OrderField = 'name' AND @OrderDir='asc' THEN g.[Name] END ASC,    
             CASE WHEN @OrderField = 'name' AND @OrderDir='desc' THEN g.[Name] END DESC, 

             CASE WHEN @OrderField = 'description' AND @OrderDir='asc' THEN g.[Description] END ASC,    
             CASE WHEN @OrderField = 'description' AND @OrderDir='desc' THEN g.[Description] END DESC 
            ) 
     ,g.Id GroupId 
     ,g.[Name] 
     ,g.[Description] 
    FROM 
     [cx_Security].[Groups] g 
    WHERE 
     (isnull(@name,'') = '' OR g.[Name] like '%' + @name + '%') 
     AND (isnull(@description,'') = '' OR g.[Description] like '%' + @description + '%') 
     AND g.IsActive = 1 
) 

SELECT 
    g.GroupId 
    ,g.[Name] 
    ,g.[Description] 
    ,PS.TotalRec 
FROM 
    groupList g 
    INNER JOIN (SELECT COUNT(RowNum) TotalRec FROM groupList) PS ON 1=1 
WHERE @PageNum = 0 OR (RowNum BETWEEN (@PageNum - 1) * @PageSize + 1 AND @PageNum * @PageSize) 

END

+0

Я не использую на стороне сервера подкачки. Вместо этого я использую loadonce: true и загружает целые данные на страницу. –

+0

Что делать, если вы используете другую функцию для сортировки таблицы, я говорю не используя функции сортировки jqgrid. Сопонимание: [link] (http://stackoverflow.com/questions/11116568/sort-table-rows-according-to-table-data) –

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