ExtJs:PageSize

时间:2015-09-16 11:43:02

标签: sql extjs store paging

您好我试图设置我的页面大小,但它不能正常工作:/我在第二页获得与第一页相同的结果。分页栏显示1-25个结果,但27个显示在第二页26-27,但结果与第一页相同。我从Sql中获取数据选择... select * from example_table我知道我可以限制25但这不是正确的解决方案因为我不能从select中获取整个数据,如果我这样做,这样!为什么我不能正确显示它?谢谢你!

Ext.define('Shopware.apps.UnSqlReader.controller.Main', {
extend: 'Ext.app.Controller',
init: function () {
var me = this;
me.mainWindow = me.getView('window.Window').create({}).show();

me.control({
    'main-window-view': {
    onSqlChange: me.onSqlChange
    }
})
},
onSqlChange: function (gridPanel, value) {
var me = this;
Ext.Ajax.request({
    url: '{url action=getColumns}',
    params: {
    fileName: value
    },
    success: function (response) {
    var responseObj = JSON.parse(response.responseText),
        grid = me.mainWindow.grid,
        pagingbar = me.mainWindow.pagingBar,
        columns = new Array(),
        gridColums = new Array();
    responseObj.columns.forEach(function (item) {
        columns.push({
        name: item,
        type: 'string',
        });
        gridColums.push({
        text: Ext.String.capitalize(item),
        dataIndex: item,
        renderer: function (val, meta) {
            meta.tdAttr = 'data-qtip="' + val.replace(/['"]+/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;') + '"';
            return val;
        }
        });
    });
    var SqlResult = Ext.create('Ext.data.Store', {
        fields: columns,
        remoteFilter: true,
        pageSize: 25,
        proxy: {
        type: 'ajax',
        url: '{url action=getSqlDetails}',
        reader: {
            type: 'json',
            root: 'data'
        }
        },
    });
    SqlResult.getProxy().extraParams.fileName = value;
    SqlResult.load();
    grid.reconfigure(SqlResult, gridColums);
    pagingbar.bindStore(SqlResult);
    grid.show();
    }
});
}

});

enter image description here

这里是完整的php函数

   public function getSqlDetailsAction() {
$fileName = $this->Request()->getParam('fileName');
$pluginFolder = dirname(dirname(__DIR__));
$sqlFolder = $pluginFolder . '/SqlFiles/';
$filePath = $sqlFolder . $fileName;
$sql = file_get_contents($filePath);
$sqlResultList = Shopware()->Db()->query($sql);
$columns = array();
for ($i = 0; $i < $sqlResultList->columnCount(); $i++) {
    $columns[$i] = $sqlResultList->getColumnMeta($i)["name"];
}
$this->View()->success = true;
$this->View()->columns = $columns;
$this->View()->data = $sqlResultList->fetchAll();
}

}`

如果有人可以帮助实现以下内容的话,那么

会很好:data = $sqlResultList->

1 个答案:

答案 0 :(得分:2)

不幸的是,这是做到这一点的方法。 pageSize参数仅在您发送请求时设置查询参数,以便服务器可以返回正确的金额:Combobox paging toolbar dosn't respond to page size

有一个选项可以立即加载整个请求并在内存中进行分页(https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.ux.data.PagingMemoryProxy)。但是,您只能对屏幕上的内容进行排序,我认为只能过滤屏幕上的内容。例如:http://extjs.eu/example-grid-memory-paging/