0

我有一个学校的学生 json 数据存储。学生参加课程。我需要按课程向学生展示。所以我有下一个分页商店:

Ext.define('AM.store.Alumnos', {
    extend: 'Ext.data.Store',
    model: 'AM.model.Alumno',
    autoLoad: false,
    start: 0,
    pageSize: 20,
    remoteSort: true,
    proxy: {
        type: 'ajax',
        url: 'mvc/stores/Alumnos.php',
        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success',
            totalProperty: 'total'
        }
    }
});

我喜欢,每门课程都没有商店。然后,当我加载商店时,通过参数发送 idCourse:

/**
 * Muestra la ventana de gestion de un grado.
 * @param {int} id course.
 * @return {void}
 */
mostrarAbmAlumnos: function(idGradoSolicitado) {
    var store = Ext.create('AM.store.Alumnos', {}).load({
        params: {idGrado: idGradoSolicitado}
    });
}

对于第一页,商店工作正常,但是当我单击“下一页”时,idCourse 不会访问服务器。

有任何想法吗 ?。

4

1 回答 1

0

我找到了解决方案。当我创建数据存储时,在加载它之前,在代理上绑定 extraParams。根据文档:

extraParams : Object 将包含在每个请求中的额外参数。具有相同名称的参数的单个请求将在它们发生冲突时覆盖这些参数。

注意:我使用 ExtJs 4,在以前的版本中,extraParams 称为 baseParams。

因此,正确的代码将:

var store = Ext.create('AM.store.Alumnos', {});
store.getProxy().extraParams.idGrado = idGradoSolicitado;
store.load();

并且工作正常!

于 2013-09-19T14:53:14.907 回答