jqGrid - 排序不起作用

时间:2013-06-11 09:52:07

标签: jqgrid

    $("#grid").jqGrid({
        datatype: 'local',
        mtype: 'GET',
        loadui: 'block',
        altRows: true,
        altclass: "myAltRow",
        multiselect: false,
        recordpos: "right",
        pagerpos: "center",
        pager: $('#gridt_summarypager'),
        pginput: false,
        rowNum: 100,
        recordtext: "Showing {0} - {1} of {2}",
        viewrecords: true,
        sortname: 'Project',
        sortorder: 'asc',
        colNames: ['ProjectID', '<%: Project %>', '<%: ProjectTitle %>' , 'ProjectItemID', '<%: usProjectItem %>', 'Hours To Authorise', 'Hours Not Posted', 'Hours Rejected', 'Last 12 Months'],
        colModel: [
      { name: 'ProjectID', index: 'ProjectID', width: 0, hidden: true},
      { name: 'Project', index: 'Project', width: 90, align: 'left', formatter: htmlEncodedString },
      { name: 'ProjectTitle', index: 'ProjectTitle', width: 90, align: 'left', formatter: htmlEncodedString },
      { name: 'ProjectItemID', index: 'ProjectItemID', width: 0, hidden:true },
      { name: 'ProjectItem', index: 'ProjectItem', width: 100, align: 'left', formatter: htmlEncodedString },
      { name: 'HoursToAuthorise', index: 'HoursToAuthorise', width: 125, align: 'right', formatter: timesheetsProjectToAuthoriseQueryFormat },
      { name: 'HoursNotPosted', index: 'HoursNotPosted', width: 125, align: 'right', formatter: timesheetsProjectUnpostedQueryFormat<% if (!(bool)ViewData["PostingEnabled"]) { %>, hidden: true <% } %> },
      { name: 'HoursRejected', index: 'HoursRejected', width: 125, align: 'right', formatter: timesheetsProjectRejectedQueryFormat },
      { name: 'HoursSubmitted12Months', index: 'HoursSubmitted12Months', width: 125, align: 'right', formatter: timesheetsProjectYearQueryFormat }],
        imgpath: '../../Scripts/css/ui-lightness/images',
        height: 145,
        shrinkToFit: false,
        hoverrows: false,
        loadError: function (xhr, st, err) {
            if (xhr.status == 200) {
                window.location = '<%= loginPage %>';
            }
            else if (xhr.status == 500) {
                $('#grid_summary_errors').html(xhr.statusText);
            }
        },
        beforeSelectRow: function(rowid, e) {
            /* disable row selection */
            return false;
        },
        onSortCol: function (index, columnIndex, sortOrder) {
            var col = $("#grid_summarygrid").getGridParam('colNames'); 
            var label = "Ordered by " + col[columnIndex] + " " + sortOrder + "ending";

            $("#gridsort").text(label);
        }
});


    $("#grid").setGridParam({ url: '<%= Url.Action(dataMethod, controllerName)%>?qid=xxx', page: 1, datatype: "json" })
                        .trigger('reloadGrid');

目前使用jqGrid 4.4.1并且它加载数据很好但是一旦应用了排序,它就会更新排序标签购买网格数据未排序。到底是怎么回事?任何帮助最受赞赏...

4 个答案:

答案 0 :(得分:10)

如果您设置url并将网格的datatype更改为"json",则您的服务器代码负责对分页等数据进行排序。如果你想一次加载网格的所有数据并希望jqGrid为你做排序和分页,那么你应该使用loadonce: true选项。

我建议您另外在jqGrid中添加gridview: true选项,将pager: $('#gridt_summarypager')替换为pager: '#gridt_summarypager',删除不存在的参数imgpath并考虑使用autoencode: true选项jqGrid,它在所有列中对字符串进行HTML编码,不包含自定义格式化程序。

答案 1 :(得分:2)

{ 
    name: "name", 
    index:"name", 
    **sortable: true,** 
    editable: true, 
    **sorttype: 'text',** 
    key: true
},

确保sorttype符合字段数据类型。例如,如果网格字段“name”包含int数字,那么你应该有sorttype:'int'。 同样如Oleg所述,您需要将loadonce设置为true。 pager:“#pager”,         gridview:是的,         rowNum:5,         的 loadonce:真,         multiSort:是的,         rownumbers:是的,         viewrecords:是的,         rowList:[5,10,15],

答案 2 :(得分:0)

包括sortable:列中的true以及jqgrid属性。

答案 3 :(得分:0)

修改此参数值对我有用。

loadonce: true