Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / TableGrid.html
diff --git a/docs/source/TableGrid.html b/docs/source/TableGrid.html
new file mode 100644 (file)
index 0000000..c7bb568
--- /dev/null
@@ -0,0 +1,91 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js">Ext.ns('Ext.ux.grid');
+
+<div id="cls-Ext.ux.grid.TableGrid"></div>/**
+ * @class Ext.ux.grid.TableGrid
+ * @extends Ext.grid.GridPanel
+ * A Grid which creates itself from an existing HTML table element.
+ * @history
+ * 2007-03-01 Original version by Nige "Animal" White
+ * 2007-03-10 jvs Slightly refactored to reuse existing classes * @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.
+ */
+Ext.ux.grid.TableGrid = function(table, config){
+    config = config ||
+    {};
+    Ext.apply(this, 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.ux.grid.TableGrid.superclass.constructor.call(this, ct, {});
+};
+
+Ext.extend(Ext.ux.grid.TableGrid, Ext.grid.GridPanel);
+
+//backwards compat
+Ext.grid.TableGrid = Ext.ux.grid.TableGrid;
+</pre>    \r
+</body>\r
+</html>
\ No newline at end of file