Hybrid View
-
27 Feb 2013 9:24 PM #1
Why RowExpander need grid to be locking to work?
Why RowExpander need grid to be locking to work?
When I config grid enableLocking to false, the grid is empty. In Ext.grid.plugin.RowExpander, there is a condition in setCmp function that check grid is locking enabled. I remove that condition and the RowExpander work without needing grid to be locking.
It would be wonderful if grid does not need to locking before we can use RowExpander.
Code:Ext.Loader.setConfig({ enabled: true }); Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.selection.CheckboxModel' ]); Ext.onReady(function(){ Ext.define('Company', { extend: 'Ext.data.Model', fields: [ {name: 'company'}, {name: 'price', type: 'float'}, {name: 'change', type: 'float'}, {name: 'pctChange', type: 'float'}, {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}, {name: 'industry'}, {name: 'desc'} ] }); // Array data for the grids Ext.grid.dummyData = [ ['3m Co',71.72,0.02,0.03,'9/1 12:00am', 'Manufacturing'], ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am', 'Manufacturing'], ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am', 'Manufacturing'], ['American Express Company',52.55,0.01,0.02,'9/1 12:00am', 'Finance'], ['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am', 'Services'], ['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am', 'Services'], ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am', 'Manufacturing'], ['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am', 'Services'], ['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am', 'Finance'], ['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am', 'Manufacturing'], ['Exxon Mobil Corp',68.1,-0.43,-0.64,'9/1 12:00am', 'Manufacturing'], ['General Electric Company',34.14,-0.08,-0.23,'9/1 12:00am', 'Manufacturing'], ['General Motors Corporation',30.27,1.09,3.74,'9/1 12:00am', 'Automotive'], ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am', 'Computer'], ['Honeywell Intl Inc',38.77,0.05,0.13,'9/1 12:00am', 'Manufacturing'], ['Intel Corporation',19.88,0.31,1.58,'9/1 12:00am', 'Computer'], ['International Business Machines',81.41,0.44,0.54,'9/1 12:00am', 'Computer'], ['Johnson & Johnson',64.72,0.06,0.09,'9/1 12:00am', 'Medical'], ['JP Morgan & Chase & Co',45.73,0.07,0.15,'9/1 12:00am', 'Finance'], ['McDonald\'s Corporation',36.76,0.86,2.40,'9/1 12:00am', 'Food'], ['Merck & Co., Inc.',40.96,0.41,1.01,'9/1 12:00am', 'Medical'], ['Microsoft Corporation',25.84,0.14,0.54,'9/1 12:00am', 'Computer'], ['Pfizer Inc',27.96,0.4,1.45,'9/1 12:00am', 'Medical'], ['The Coca-Cola Company',45.07,0.26,0.58,'9/1 12:00am', 'Food'], ['The Home Depot, Inc.',34.64,0.35,1.02,'9/1 12:00am', 'Retail'], ['The Procter & Gamble Company',61.91,0.01,0.02,'9/1 12:00am', 'Manufacturing'], ['United Technologies Corporation',63.26,0.55,0.88,'9/1 12:00am', 'Computer'], ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am', 'Services'], ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am', 'Retail'], ['Walt Disney Company (The) (Holding Company)',29.89,0.24,0.81,'9/1 12:00am', 'Services'] ]; // add in some dummy descriptions for(var i = 0; i < Ext.grid.dummyData.length; i++){ Ext.grid.dummyData[i].push('Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh, sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. '); } Ext.QuickTips.init(); var getLocalStore = function() { return Ext.create('Ext.data.ArrayStore', { model: 'Company', data: Ext.grid.dummyData }); }; //////////////////////////////////////////////////////////////////////////////////////// // Grid 1 //////////////////////////////////////////////////////////////////////////////////////// // row expander var grid1 = Ext.create('Ext.grid.Panel', { store: getLocalStore(), columns: [ {text: "Company", flex: 1, dataIndex: 'company'}, {text: "Price", renderer: Ext.util.Format.usMoney, dataIndex: 'price'}, {text: "Change", dataIndex: 'change'}, {text: "% Change", dataIndex: 'pctChange'}, {text: "Last Updated", renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'} ], enableLocking: false, width: 600, height: 300, plugins: [{ ptype: 'rowexpander', rowBodyTpl : new Ext.XTemplate( '<p><b>Company:</b> {company}</p>', '<p><b>Change:</b> {change:this.formatChange}</p><br>', '<p><b>Summary:</b> {desc}</p>', { formatChange: function(v){ var color = v >= 0 ? 'green' : 'red'; return '<span style="color: ' + color + ';">' + Ext.util.Format.usMoney(v) + '</span>'; } }) }], collapsible: true, animCollapse: false, title: 'Expander Rows in a Collapsible Grid with lockable columns', iconCls: 'icon-grid', margin: '0 0 20 0', renderTo: Ext.getBody() }); });
-
1 Mar 2013 4:43 AM #2
same here...
i override the setCmp method comment out the enableLocking condition::
PHP Code:Ext.override(Ext.grid.plugin.RowExpander, {
setCmp: function(grid) {
var me = this,
rowBodyTpl,
features;
me.callParent(arguments);
// TODO check the override after ExtJs-4.2.0 is released
//if (grid.enableLocking) {
me.recordsExpanded = {};
// <debug>
if (!me.rowBodyTpl) {
Ext.Error.raise("The 'rowBodyTpl' config is required and is not defined.");
}
// </debug>
me.rowBodyTpl = Ext.XTemplate.getTpl(me, 'rowBodyTpl');
rowBodyTpl = this.rowBodyTpl;
features = [{
ftype: 'rowbody',
lockableScope: 'normal',
columnId: me.getHeaderId(),
recordsExpanded: me.recordsExpanded,
rowBodyHiddenCls: me.rowBodyHiddenCls,
rowCollapsedCls: me.rowCollapsedCls,
setupRowData: me.getRowBodyFeatureData,
getRowBodyContents: function(record) {
return rowBodyTpl.applyTemplate(record.getData());
}
},{
ftype: 'rowwrap',
lockableScope: 'normal'
}];
if (grid.features) {
grid.features = Ext.Array.push(features, grid.features);
} else {
grid.features = features;
}
//}
// NOTE: features have to be added before init (before Table.initComponent)
}
});
-
3 Mar 2013 8:02 AM #3
That's a bug!
I will investigate this.Search the forum: http://www.google.com/coop/cse?cx=01...%3Az7of1ufqccu
Read the docs too: http://extjs.com/deploy/dev/docs/
Scope: http://extjs.com/forum/showthread.ph...642#post257642
-
3 Mar 2013 8:07 AM #4
Thanks for the report! I have opened a bug in our bug tracker.
Success! Looks like we've fixed this one. According to our records the fix was applied for
EXTJSIV-8946
in
4.2.0.663.


Reply With Quote