X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/grid/View.js diff --git a/src/grid/View.js b/src/grid/View.js new file mode 100644 index 00000000..cb47756c --- /dev/null +++ b/src/grid/View.js @@ -0,0 +1,109 @@ +/** + * @class Ext.grid.View + * @extends Ext.view.Table + +The grid View class provides extra {@link Ext.grid.Panel} specific functionality to the +{@link Ext.view.Table}. In general, this class is not instanced directly, instead a viewConfig +option is passed to the grid: + + Ext.create('Ext.grid.Panel', { + // other options + viewConfig: { + stripeRows: false + } + }); + +__Drag Drop__ +Drag and drop functionality can be achieved in the grid by attaching a {@link Ext.grid.plugin.DragDrop} plugin +when creating the view. + + Ext.create('Ext.grid.Panel', { + // other options + viewConfig: { + plugins: { + ddGroup: 'people-group', + ptype: 'gridviewdragdrop', + enableDrop: false + } + } + }); + + * @markdown + */ +Ext.define('Ext.grid.View', { + extend: 'Ext.view.Table', + alias: 'widget.gridview', + + /** + * @cfg {Boolean} stripeRows true to stripe the rows. Default is false. + *

This causes the CSS class x-grid-row-alt to be added to alternate rows of + * the grid. A default CSS rule is provided which sets a background color, but you can override this + * with a rule which either overrides the background-color style using the '!important' + * modifier, or which uses a CSS selector of higher specificity.

+ */ + stripeRows: true, + + invalidateScrollerOnRefresh: true, + + /** + * Scroll the GridView to the top by scrolling the scroller. + * @private + */ + scrollToTop : function(){ + if (this.rendered) { + var section = this.ownerCt, + verticalScroller = section.verticalScroller; + + if (verticalScroller) { + verticalScroller.scrollToTop(); + } + } + }, + + // after adding a row stripe rows from then on + onAdd: function(ds, records, index) { + this.callParent(arguments); + this.doStripeRows(index); + }, + + // after removing a row stripe rows from then on + onRemove: function(ds, records, index) { + this.callParent(arguments); + this.doStripeRows(index); + }, + + /** + * Stripe rows from a particular row index + * @param {Number} startRow + * @private + */ + doStripeRows: function(startRow) { + // ensure stripeRows configuration is turned on + if (this.stripeRows) { + var rows = this.getNodes(startRow), + rowsLn = rows.length, + i = 0, + row; + + for (; i < rowsLn; i++) { + row = rows[i]; + // Remove prior applied row classes. + row.className = row.className.replace(this.rowClsRe, ' '); + // Every odd row will get an additional cls + if (i % 2 === 1) { + row.className += (' ' + this.altRowCls); + } + } + } + }, + + refresh: function(firstPass) { + this.callParent(arguments); + this.doStripeRows(0); + // TODO: Remove gridpanel dependency + var g = this.up('gridpanel'); + if (g && this.invalidateScrollerOnRefresh) { + g.invalidateScroller(); + } + } +});