Значок сортировки jqgrid для столбцов не сбрасывается после вызова триггера ('reloadGrid') - PullRequest
2 голосов
/ 21 февраля 2011

Пожалуйста, посмотрите пример кода ниже.

  • Изначально сетка не имеет иконки сортировки ни в одном из заголовков столбцов сетки - хорошо.

  • Нажмите на заголовок столбца «Клиент», чтобы отсортировать сетку.

  • Нажмите на кнопку ОБНОВИТЬ.Он вызывает grid.trigger ('reloadGrid').

  • Сетка перезагружена, но значок сортировки в заголовке «Клиент» все еще там.- не так хорошо, как хотелось бы.

`

  $(function() {
     var mydata = [  
            {id:"1", name:"test",       amount:"200"},  
            {id:"2", name:"test2",      amount:"300"},  
            {id:"3", name:"F",          amount:"400"},  
            {id:"4", name:"test4",      amount:"200"},  
            {id:"5", name:"test5",      amount:"300"},  
            {id:"6", name:"test6",      amount:"400"},  
            {id:"7", name:"test7",      amount:"200"},  
            {id:"8", name:"test8",      amount:"300"},  
            {id:"9", name:"test9",      amount:"400"},  
            {id:"10",name:"test10",     amount:"500"},  
            {id:"11",name:"F",          amount:"500"},  
            {id:"12",name:"test11",     amount:"500"},  
            {id:"13", name:"test",      amount:"200"},  
            {id:"14", name:"O",         amount:"200"}  
 ];  
 jQuery("#list").jqGrid({           
        datatype: "local",  
        data: mydata,  
        width: 700,  
        loadComplete: function() {
            $(this).setGridParam({sortname: 'id'});
        },  
                    colNames:['Inv No','Client', 'Amount'],  
        colModel:[
            {name:'id',index:'id', width:65, sorttype:'int', searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}},  
            {name:'name',index:'name', width:100, searchoptions:{dataUrl:'/api/domains/producttypedomain'}},  
            {name:'amount',index:'amount', sorttype:'int', width:80, align:"right"}
        ],  
        rowNum:100, 
        pager: '#pager',            
        height:'auto',  
        viewrecords: true,  
        rownumbers: true,  
        gridview : true,            
        caption:"Advanced Search Example"
    });
    jQuery("#list").jqGrid('navGrid','#pager',  
    {
        edit:false,add:false,del:false,search:true,refresh:true
    },  
    {}, // edit options
    {}, // add options
    {}, //del options
    {
        multipleSearch:true, overlay:false,  recreateFilter:true            
    } // search options
    );
});
$(function() {
    $('#refresh-btn').click(function() {
        jQuery("#list").trigger('reloadGrid');          
    });
});

`

Ответы [ 2 ]

3 голосов
/ 21 февраля 2011

Если вы хотите, чтобы значок сортировки не был виден, вы можете сделать это с помощью

$("span.s-ico",jQuery("#list").grid.hDiv).hide();

Несортированная сетка (sortname:'') - не лучший выбор в большинстве ситуаций.Поэтому я рекомендую вам выбрать какой-нибудь столбец, например «id», для сортировки данных.Если вы хотите, чтобы отсортированные данные не сортировались, вы должны установить параметр sortname:'' перед перезагрузкой сетки.Таким образом, функция, выполняемая по нажатию вашей кнопки «# refresh-btn», должна выглядеть примерно так:

$('#refresh-btn').click(function() {
    var myGrid = jQuery("#list");
    $("span.s-ico",myGrid[0].grid.hDiv).hide(); // hide sort icons
    myGrid.setGridParam({sortname: ''}).trigger('reloadGrid');
});

Что вы хотите сделать в loadComplete, я не уверен.Изменение параметра sortname на месте уже слишком поздно.

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

Я рекомендую удалить кнопку «Перезагрузить» из сетки.панель навигации или добавить пользовательскую кнопку с кнопкой «Перезагрузить» и делать то, что вы действительно хотите иметь.

1 голос
/ 16 апреля 2014

С версией 4.6.0 jqGrid это работало для меня:

$('.s-ico').hide();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...