Мне нужно добавить кнопку, чтобы показать все записи в сетке

Мне нужно показать все записи в сетке при нажатии кнопки «Показать все» на панели инструментов подкачки, закрепленной внизу.

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

Можете ли вы помочь мне с тем, что еще мне не хватает в этом?

ds.load({params:{start:0,limit:iCnt }});

Пробовал выше, но все равно не повезло

grid.addDocked({
        xtype: 'pagingtoolbar',
        dock: 'bottom',
        pageSize: 50,  //maxRowCnt,//Pagesize set
        store: grid.getStore(),//Grid's store set
        displayInfo: true,//Display the records information
        displayMsg: 'Displaying Records {0} - {1} of {2}',
        emptyMsg: "No records to display",
        items: [
        {
            pressed: false,
            enableToggle:false,
            cls: 'x-btn-text',
            text: 'Show All',
            tooltipType: 'title',
            tooltip: ' Show all records ',
            handler:showAllFunc
        }]
    });


showAllFunc = function() {
    var grid = ColdFusion.Grid.getGridObject("mainGrid");
    var ds = grid.getStore();
    var iCnt = ds.getTotalCount();
    ds.load({params:{start:0,limit:iCnt }});
    grid.getView().refresh();
    grid.getDockedItems('toolbar[dock="bottom"]')[1].updateInfo();
}

person user9807332    schedule 07.02.2019    source источник
comment
вам нужно обновить pageSize   -  person Rohit Sharma    schedule 07.02.2019
comment
Пробовал это ds.pageSize=iCnt, единственное, что изменилось, это displayMsg, но сетка не обновлялась, чтобы показать все элементы.   -  person user9807332    schedule 07.02.2019
comment
опубликуйте скрипку о том, что вы уже пробовали.   -  person Rohit Sharma    schedule 07.02.2019
comment
дозировать ваш ds.load запускает запрос ajax? и как после этого выглядит ответ от бэкенда?   -  person Moataz Sanad    schedule 08.02.2019
comment
Наконец-то я понял, что для обновления нижней панели инструментов подкачки необходимо обновить размер страницы магазина ds.pageSize=iCnt; И правильно указал Moataz, мой запрос ajax будет обновлен только с размером страницы или даже с ds.load({params:{start:0,limit:iCnt }}); start и limit не имеют значения. Понял, что в моем случае мне пришлось обновить параметр размера страницы ds.load({params:{pageSize:iCnt}});   -  person user9807332    schedule 08.02.2019
comment
Кто-то должен написать решение как ответ ;-)   -  person SOS    schedule 12.02.2019


Ответы (1)


Вот решение JS, которое я исследовал несколько лет назад. Есть пара ссылок, которые я сохранил для встроенной документации.

//get the grid Object
grid = ColdFusion.Grid.getGridObject('myGrid'); //your grid name

//Call the function to add record count to the grid
gridFooter(grid);

//Modify grid footer to display record count
//See http://docs.sencha.com/ext-js/3-4/#!/api/Ext.PagingToolbar-cfg-prependButtons for more details.
var gridFooter = function()
{   //modified from 
//http://www.thecfguy.com/post.cfm/showing-record-information-in-cfgrid-footer-in-coldfusion-9

//overwrite existing grid footer with new div, Ext.id() will assign unique id to footer
var bbar = Ext.DomHelper.overwrite(grid.bbar,{tag:'div',id:Ext.id()},true);

//Create new PagingToolbar and render it to bbar (grid footer)
gbbar = new Ext.PagingToolbar({
    renderTo:bbar,
    store: grid.store, 
    pageSize: pgSize,
    displayMsg: 'Showing {0} - {1} out of {2} records',
    emptyMsg: '<b style="color:red">No Records Found</b>',
    displayInfo: true
});

}

person Mike    schedule 12.02.2019