Nous allons reprendre les exemples du chapitre précèdent : GrdiPanel dynamique avec pagination. vous devez aussi avoir lu Extend ou comment créer son propre composant
Pour créer votre propre tableau paginer :
Normalement vous devriez trouver à peu prêt cela :
Tous ces éléments sont variables d'un tableau à un autre. Par conséquent ils ne seront pas définit dans notre classe.
Nous allons tout d'abord créer un espace de nom dans lequel nous placerons tout nos composants. L'espace de nom sera LIB. Comme ce composant est de type grid, l'espace de nom final sera LIB.grid
Ext.namespace('LIB','LIB.grid');
LIB.grid.MyGridPanelPaginator = Ext.extend( Ext.grid.GridPanel, {
constructor : function(config) {
config = Ext.apply( {
}, config);
LIB.grid.MyGridPanelPaginator.superclass.constructor.call(this, config);
}
});
juste après la ligne :
constructor : function(config) {
1) Si, lors de la création du futur objet, on spécifie la variable champsDeDonnees alors on l'utilisera. Sinon ce sera un tableau vide.
var mesChampsDeDonnees = (config.mesChampsDeDonnees ? config.mesChampsDeDonnees : [] );
2) Nous allons faire de meme pour toutes les variables :
var mesColonnes = (config.mesColonnes ? config.mesColonnes : []);
var limitParPage = (config.limitParPage ? config.limitParPage : 2);
var url = (config.url ? config.url : '');
var sortInfo = (config.sortInfo ? config.sortInfo : []);
3 ) Création du store : (fields, url et sortInfo sont paramétrés)
var monStore = new Ext.data.JsonStore({
root: 'rows',
fields:mesChampsDeDonnees,
url:url,
remoteSort : true,
sortInfo:sortInfo,
autoLoad:{
params:{
limit:limitParPage
}
}
});
4) Création du paginator :
var maPagination = new Ext.PagingToolbar({
store: monStore,
pageSize: limitParPage,
displayInfo: true
});
config = Ext.apply( {
autoHeight:true,
renderTo:Ext.getBody(),
store: monStore,
columns:mesColonnes,
bbar: maPagination
}, config);
LIB.grid.MyGridPanelPaginator.superclass.constructor.call(this, config);
Ext.namespace('LIB','LIB.grid');
/**
* @class LIB.grid.MyGridPanelPaginator
* @extends Ext.grid.GridPanel
* @constructor
*
* @param {Object} config Les options de configurations
*/
LIB.grid.MyGridPanelPaginator = Ext.extend( Ext.grid.GridPanel, {
constructor : function(config) {
var mesChampsDeDonnees = (config.mesChampsDeDonnees ? config.mesChampsDeDonnees : []);
var mesColonnes = (config.mesColonnes ? config.mesColonnes : []);
var limitParPage = (config.limitParPage ? config.limitParPage : 2);
var url = (config.url ? config.url : '');
var sortInfo = (config.sortInfo ? config.sortInfo : []);
var monStore = new Ext.data.JsonStore({
root: 'rows',
fields:mesChampsDeDonnees,
url:url,
remoteSort : true,
sortInfo:sortInfo,
autoLoad:{
params:{
limit:limitParPage
}
}
});
var maPagination = new Ext.PagingToolbar({
store: monStore,
pageSize: limitParPage,
displayInfo: true
});
config = Ext.apply( {
autoHeight:true,
renderTo:Ext.getBody(),
store: monStore,
columns:mesColonnes,
bbar: maPagination
}, config);
LIB.grid.MyGridPanelPaginator.superclass.constructor.call(this, config);
}
});