您好我试图设置我的页面大小,但它不能正常工作:/我在第二页获得与第一页相同的结果。分页栏显示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, '"').replace(/</g, '<').replace(/>/g, '>') + '"';
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();
}
});
}
});
这里是完整的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->
答案 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/