1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*
- * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
- *
- * http://extjs.com/license
- */
- Ext.onReady(function() {
- var btn = Ext.get("create-grid");
- btn.on("click", function() {
- btn.dom.disabled = true;
- // create the grid
- var grid = new Ext.grid.TableGrid("the-table");
- grid.render();
- }, false, {
- single : true
- }); // run once
- });
- /**
- * @class Ext.grid.TableGrid
- * @extends Ext.grid.Grid A Grid which creates itself from an existing HTML
- * table element.
- * @constructor
- * @param {String/HTMLElement/Ext.Element}
- * table The table element from which this grid will be created - The
- * table MUST have some type of size defined for the grid to fill.
- * The container will be automatically set to position relative if it
- * isn't already.
- * @param {Object}
- * config A config object that sets properties on this grid and has
- * two additional (optional) properties: fields and columns which
- * allow for customizing data fields and columns for this grid.
- * @history 2007-03-01 Original version by Nige "Animal" White 2007-03-10 jvs
- * Slightly refactored to reuse existing classes
- */
- Ext.grid.TableGrid = function(table, config) {
- config = config || {};
- var cf = config.fields || [], ch = config.columns || [];
- table = Ext.get(table);
- var ct = table.insertSibling();
- var fields = [], cols = [];
- var headers = table.query("thead th");
- for (var i = 0, h; h = headers[i]; i++) {
- var text = h.innerHTML;
- var name = 'tcol-' + i;
- fields.push(Ext.applyIf(cf[i] || {}, {
- name : name,
- mapping : 'td:nth(' + (i + 1) + ')/@innerHTML'
- }));
- cols.push(Ext.applyIf(ch[i] || {}, {
- 'header' : text,
- 'dataIndex' : name,
- 'width' : h.offsetWidth,
- 'tooltip' : h.title,
- 'sortable' : true
- }));
- }
- var ds = new Ext.data.Store({
- reader : new Ext.data.XmlReader({
- record : 'tbody tr'
- }, fields)
- });
- ds.loadData(table.dom);
- var cm = new Ext.grid.ColumnModel(cols);
- if (config.width || config.height) {
- ct.setSize(config.width || 'auto', config.height || 'auto');
- } else {
- ct.setWidth(table.getWidth());
- }
- if (config.remove !== false) {
- table.remove();
- }
- Ext.applyIf(this, {
- 'ds' : ds,
- 'cm' : cm,
- 'sm' : new Ext.grid.RowSelectionModel(),
- autoHeight : true,
- autoWidth : false
- });
- Ext.grid.TableGrid.superclass.constructor.call(this, ct, {});
- };
- Ext.extend(Ext.grid.TableGrid, Ext.grid.GridPanel);
|