sorting - Extjs autoGrid sort Issue -


i'm using extjs 3.4

i have created extjs grid, build self according meta data recieved server side.

this 'autogrid' build on 'autostore' :

grid :

function autogrid(response, panel, node) { var jsondata = ext.util.json.decode(response[0]); var grid = ext.getcmp('contentgrid_' + panel.title); if (grid) {     grid.destroy(); } var gridstorefields = [], sizecolumnavailable = false, gridpagingtoolbar, gridpagerinfo, griditemsinfo, griddroptarget = null, readerfields = [], gridcolumns = [], gridfilters; try {     gridcolumns.push(new ext.grid.rownumberer({ width: 30 }));     (var = 0; < jsondata.length; i++) {         var field = {  name: jsondata[i].name, type: jsondata[i].type };         var header = { name: jsondata[i].name, dataindex: jsondata[i].name, type: jsondata[i].type, header: jsondata[i].header, sortable: jsondata[i].sortable };         gridstorefields.push(field);         gridcolumns.push(header);         readerfields.push(jsondata[i].name);     } } catch (e) {     processscripterror(e); } var store = autogridstore(gridstorefields, readerfields, selectednode); grid = new ext.grid.gridpanel({     defaults: { sortable: true },     id: 'contentgrid_' + panel.targetentity,     store: store,     columns: gridcolumns,     frame: true,     loadmask: true,     remotesort: true,     width: 700,     height: 450,     bbar: new ext.pagingtoolbar({         id: 'contentgrid_' + panel.title + '_pagingtoolbar',         pagesize: 20,//commonparameters.user.preferences.linesperpage,         store: store,         displayinfo: true,         totalproperty: "totalcount",         displaymsg: commonparameters.labels.lbl_element_afficher + ' {0} - {1}' + ' ' + commonparameters.labels.lbl_de + ' ' + '{2}',         emptymsg: commonparameters.labels.msg_empty     }),     listeners: {         rowdblclick: function (grid, row, _object) {             // si l'utilisateur accès , ouverture au double clic             // if(gettraitementwebafficher(1))             //{             var record = grid.getstore().getat(row);             if (record != null)                 edit(record.data.id);             else                 ext.messagebox.alert(commonparameters.labels.msg_error, commonparameters.labels.msg_probleme);             // }         },         rowcontextmenu: initgridcontextmenu     } }); grid.store.load({     params: {         start: 0,         limit: 2,//commonparameters.user.cdus_nb_ligne_par_page,         sort: grid.store.sortinfo.field,         dir: grid.store.sortinfo.direction,         'action': 'search',         targetentity:grid.store.targetentity     } }); grid.store.on('load', function (store, records, options) {     // store successufully loaded => hide loading window...     commonparameters.globalloadmask.hide(); }); panel.add(grid); panel.dolayout(); 

}

store :

function autogridstore(gridstorefields, readerfields) { var autogridstorereader = new ext.data.jsonreader({     totalproperty: "totalcount",    // property contains number of returned records (optional)     root: "records",                // property contains array of record objects     id: "id"                     // property within record object provides id record (optional) }, readerfields); var autogridstore = new ext.data.store({fields : gridstorefields, url: selectednode.attributes.nodeurl, targetentity: selectednode.attributes.targetentity }); autogridstore.remotesort = true; autogridstore.idproperty = 'id'; autogridstore.totalproperty = 'totalcount'; autogridstore.successproperty = 'success'; autogridstore.sortinfo = { field: "id", direction: "asc" }; if (autogridstore.getsortstate()) {     autogridstore.sortinfo = { field: autogridstore.getsortstate().field, direction: autogridstore.getsortstate().direction }; } autogridstore.reader = autogridstorereader; return autogridstore; 

}

every thing ok, data retrieved, rendered on grid. problem when tried make sort ( remotesort ), there error on sort direction, got ext error :

 singlesort: function (fieldname, dir) {     var field = this.fields.get(fieldname);     if (!field) {         return false;     }      var name = field.name,         sortinfo = this.sortinfo || null,         sorttoggle = this.sorttoggle ? this.sorttoggle[name] : null;      if (!dir) {         if (sortinfo && sortinfo.field == name) {             dir = (this.sorttoggle[name] || 'asc').toggle('asc', 'desc');         } else {             dir = field.sortdir;         }     } 

the fieldname retrieved, sort direction empty.

it seems store considered object , not ext.json.store because when debug have :

var field = this.fields.get(fieldname); => this.fields doesn't contain definition ...  

any idea please ?

i have experienced same problem. this.fields.get(fieldname) undefined when sort. appears when store not construct, might come meta data received server side.

you can achieve want using store metachange event:

onmetachange: function(newcol){  [...]     this.grid.reconfigure(store, new ext.grid.columnmodel(this.reader.meta.colmodel)) } 

see this:

add dynamic column ext js 3.4


Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -