Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / edit-grid.html
diff --git a/docs/source/edit-grid.html b/docs/source/edit-grid.html
new file mode 100644 (file)
index 0000000..3addeae
--- /dev/null
@@ -0,0 +1,139 @@
+<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.onReady(function(){\r
+    Ext.QuickTips.init();\r
+\r
+    function formatDate(value){\r
+        return value ? value.dateFormat('M d, Y') : '';\r
+    }\r
+    // shorthand alias\r
+    var fm = Ext.form;\r
+\r
+    // custom column plugin example\r
+    var checkColumn = new Ext.grid.CheckColumn({\r
+       header: 'Indoor?',\r
+       dataIndex: 'indoor',\r
+       width: 55\r
+    });\r
+\r
+    // the column model has information about grid columns\r
+    // dataIndex maps the column to the specific data field in\r
+    // the data store (created below)\r
+    var cm = new Ext.grid.ColumnModel([{\r
+           id: 'common',\r
+           header: 'Common Name',\r
+           dataIndex: 'common',\r
+           width: 220,\r
+           // use shorthand alias defined above\r
+           editor: new fm.TextField({\r
+               allowBlank: false\r
+           })\r
+        },{\r
+           header: 'Light',\r
+           dataIndex: 'light',\r
+           width: 130,\r
+           editor: new fm.ComboBox({\r
+               typeAhead: true,\r
+               triggerAction: 'all',\r
+               transform:'light',\r
+               lazyRender: true,\r
+               listClass: 'x-combo-list-small'\r
+            })\r
+        },{\r
+           header: 'Price',\r
+           dataIndex: 'price',\r
+           width: 70,\r
+           align: 'right',\r
+           renderer: 'usMoney',\r
+           editor: new fm.NumberField({\r
+               allowBlank: false,\r
+               allowNegative: false,\r
+               maxValue: 100000\r
+           })\r
+        },{\r
+           header: 'Available',\r
+           dataIndex: 'availDate',\r
+           width: 95,\r
+           renderer: formatDate,\r
+           editor: new fm.DateField({\r
+                format: 'm/d/y',\r
+                minValue: '01/01/06',\r
+                disabledDays: [0, 6],\r
+                disabledDaysText: 'Plants are not available on the weekends'\r
+            })\r
+        },\r
+        checkColumn\r
+    ]);\r
+\r
+    // by default columns are sortable\r
+    cm.defaultSortable = true;\r
+\r
+    // create the Data Store\r
+    var store = new Ext.data.Store({\r
+        // load remote data using HTTP\r
+        url: 'plants.xml',\r
+\r
+        // specify a XmlReader (coincides with the XML format of the returned data)\r
+        reader: new Ext.data.XmlReader(\r
+            {\r
+                // records will have a 'plant' tag\r
+                record: 'plant'\r
+            },\r
+            // use an Array of field definition objects to implicitly create a Record constructor\r
+            [\r
+                // the 'name' below matches the tag name to read, except 'availDate'\r
+                // which is mapped to the tag 'availability'\r
+                {name: 'common', type: 'string'},\r
+                {name: 'botanical', type: 'string'},\r
+                {name: 'light'},\r
+                {name: 'price', type: 'float'},             \r
+                // dates can be automatically converted by specifying dateFormat\r
+                {name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y'},\r
+                {name: 'indoor', type: 'bool'}\r
+            ]\r
+        ),\r
+\r
+        sortInfo: {field:'common', direction:'ASC'}\r
+    });\r
+\r
+    // create the editor grid\r
+    var grid = new Ext.grid.EditorGridPanel({\r
+        store: store,\r
+        cm: cm,\r
+        renderTo: 'editor-grid',\r
+        width: 600,\r
+        height: 300,\r
+        autoExpandColumn: 'common',\r
+        title: 'Edit Plants?',\r
+        frame: true,\r
+        plugins: checkColumn,\r
+        clicksToEdit: 1,\r
+        tbar: [{\r
+            text: 'Add Plant',\r
+            handler : function(){\r
+                // access the Record constructor through the grid's store\r
+                var Plant = grid.getStore().recordType;\r
+                var p = new Plant({\r
+                    common: 'New Plant 1',\r
+                    light: 'Mostly Shade',\r
+                    price: 0,\r
+                    availDate: (new Date()).clearTime(),\r
+                    indoor: false\r
+                });\r
+                grid.stopEditing();\r
+                store.insert(0, p);\r
+                grid.startEditing(0, 0);\r
+            }\r
+        }]\r
+    });\r
+\r
+    // trigger the data store load\r
+    store.load();\r
+});</pre>    \r
+</body>\r
+</html>
\ No newline at end of file