Javascript 分页不工作,Extjs网格

Javascript 分页不工作,Extjs网格,javascript,extjs,paging,Javascript,Extjs,Paging,我制作了一个带有底部工具栏的extjs网格来创建分页行为,但它不起作用,我不知道问题出在哪里,我已经用本地数据做了,但是当我使用数据库时,它不起作用,它一次显示所有数据。 代码如下: Ext.require([ 'Ext.data.*', 'Ext.grid.*' ]); Ext.onReady(function() { var categoriesStore = Ext.create('Ext.data.JsonStore', { autoLoad: true, pageS

我制作了一个带有底部工具栏的extjs网格来创建分页行为,但它不起作用,我不知道问题出在哪里,我已经用本地数据做了,但是当我使用数据库时,它不起作用,它一次显示所有数据。
代码如下:

Ext.require([ 'Ext.data.*', 'Ext.grid.*' ]);

Ext.onReady(function() {
var categoriesStore = Ext.create('Ext.data.JsonStore', {
    autoLoad: true,
    pageSize : 10,      
    proxy: {
           type: 'ajax',
           url: 'GridDataBase/categories.php',
           reader: {
               type: 'json',
               totalProperty: 'total',
               root: 'categories',
               idProperty: 'name'
           }            
    },
    fields : ['id','name']
});

var panelOfData = Ext.create('Ext.grid.GridPanel',{
    store : categoriesStore,
    columns : [ {
        id : 'id',
        header : "Id",
        width : 20,
        sortable : true,
        dataIndex : 'id'
    }, {
        id : 'name',
        header : "Category Name",
        width : 75,
        sortable : true,
        dataIndex : 'name'
    } ],
    //stripeRows : true,

        //paging bar on the bottom
    bbar: Ext.create('Ext.PagingToolbar', {
        store: categoriesStore,
        displayInfo: true,
        displayMsg: '{0} - {1} of {2}',
        emptyMsg: "No categories to display"
    }),
    autoExpandColumn : 'name',
    height : 350,
    width : 600,
    renderTo : 'grid-ex',
    title : 'Categories'
});

categoriesStore.loadPage(1);
console.log(categoriesStore.count()); // the log here shows 0
});

以下是PHP文件:


Extjs代码发送一些额外的参数来实现服务器启动、限制分页,这些参数必须在查询中使用,以便将记录发送回存储区的pagesize限制。服务器响应还应发回一个属性,该属性包含记录总数(分配给存储区的totalProperty),用于计算页数

    store.load({
        params:{
            start:0,
            limit: itemsPerPage
        }
    });

希望能有帮助

您尚未在服务器端实现分页。试试这个:

function GetCategories($start, $limit) {
    $query = "SELECT id, name FROM categorie LIMIT $start, $limit";  
    $categories = array("categories" => array());
    @mysql_connect("localhost","superuser","SS4") or die();
    mysql_select_db("dbz"); !mysql_error () or die();
    $result = mysql_query($query);

    $num = mysql_num_rows($result);
    $i = 0;

    while ($row = mysql_fetch_assoc($result)) {
        $categories["categories"][$i] = $row;
        $i++;
    }

    return json_encode($categories);
}
$start = isset($_GET['start']) ? $_GET['start'] : 0;
$limit = isset($_GET['limit']) ? $_GET['limit'] : 0;

echo GetCategories($start, $limit);

您是否在
categories.php
中实现了分页?分页所做的是将分页相关参数传递给php脚本,但服务器端的实现在您手中。页面只提供json输出,数据来自mysql数据库。我不知道应该将代码放在哪里,我必须在工具栏中实现一个处理程序,其中包含您提供的代码。加载存储时,您必须传递start和limit参数值,然后您的查询应该从start返回等于limit param value的记录。初始开始值为0,限制值为要显示的记录数(例如20条)。因此,现在您的查询应该是前20条记录,即0-19条。同样,在下一页,开始参数的值将为20,限制参数将保持为20。现在,您的查询应该返回20条记录,即20-39条,以此类推。
function GetCategories($start, $limit) {
    $query = "SELECT id, name FROM categorie LIMIT $start, $limit";  
    $categories = array("categories" => array());
    @mysql_connect("localhost","superuser","SS4") or die();
    mysql_select_db("dbz"); !mysql_error () or die();
    $result = mysql_query($query);

    $num = mysql_num_rows($result);
    $i = 0;

    while ($row = mysql_fetch_assoc($result)) {
        $categories["categories"][$i] = $row;
        $i++;
    }

    return json_encode($categories);
}
$start = isset($_GET['start']) ? $_GET['start'] : 0;
$limit = isset($_GET['limit']) ? $_GET['limit'] : 0;

echo GetCategories($start, $limit);