<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test dojox.Grid Editing</title> <style type="text/css"> @import "../_grid/tundraGrid.css"; @import "../../../dojo/resources/dojo.css"; @import "../../../dijit/themes/tundra/tundra.css"; @import "../../../dijit/themes/tundra/tundra_rtl.css"; @import "../../../dijit/tests/css/dijitTests.css"; #controls button { margin-left: 10px; } #grid { width: 850px; height: 350px; border: 1px solid silver; } </style> <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script> <script type="text/javascript" src="../../../dijit/tests/_testCommon.js"></script> <script type="text/javascript"> dojo.require("dojox.grid.Grid"); dojo.require("dojo.parser"); // ========================================================================== // Create a data model // ========================================================================== s = (new Date()).getTime(); data = [ [ "normal", false, "new", 'But are not followed by two hexadecimal', 29.91, 10, false, s], [ "important", false, "new", 'Because a % sign always indicates', 9.33, -5, false, s ], [ "important", false, "read", 'Signs can be selectively', 19.34, 0, true, s ], [ "note", false, "read", 'However the reserved characters', 15.63, 0, true, s ], [ "normal", false, "replied", 'It is therefore necessary', 24.22, 5.50, true, s ], [ "important", false, "replied", 'To problems of corruption by', 9.12, -3, true, s ], [ "note", false, "replied", 'Which would simply be awkward in', 12.15, -4, false, s ] ]; var rows = 100; for(var i=0, l=data.length; i<rows; i++){ data.push(data[i%l].slice(0)); } model = new dojox.grid.data.Table(null, data); // ========================================================================== // Tie some UI to the data model // ========================================================================== model.observer(this); modelChange = function(){ dojo.byId("rowCount").innerHTML = 'Row count: ' + model.count; } /* modelInsertion = modelDatumChange = function(a1, a2, a3){ console.debug(a1, a2, a3); } */ // ========================================================================== // Custom formatters // ========================================================================== formatCurrency = function(inDatum){ return isNaN(inDatum) ? '...' : dojo.currency.format(inDatum, this.constraint); } formatDate = function(inDatum){ return dojo.date.locale.format(new Date(inDatum), this.constraint); } // ========================================================================== // Grid structure // ========================================================================== statusCell = { field: 2, name: 'Status', styles: 'text-align: center;', editor: dojox.grid.editors.Select, options: [ "new", "read", "replied" ] }; gridLayout = [{ type: 'dojox.GridRowView', width: '20px' },{ defaultCell: { width: 8, editor: dojox.grid.editors.Input, styles: 'text-align: right;' }, rows: [[ { name: 'Id', get: function(inRowIndex) { return inRowIndex+1;}, editor: dojox.grid.editors.Dijit, editorClass: "dijit.form.NumberSpinner" }, { name: 'Date', width: 10, field: 7, editor: dojox.grid.editors.DateTextBox, formatter: formatDate, constraint: {formatLength: 'long', selector: "date"}}, { name: 'Priority', styles: 'text-align: center;', field: 0, editor: dojox.grid.editors.ComboBox, options: ["normal", "note", "important"], width: 10}, { name: 'Mark', width: 3, styles: 'text-align: center;', editor: dojox.grid.editors.CheckBox}, statusCell, { name: 'Message', styles: '', width: '100%', editor: dojox.grid.editors.Editor, editorToolbar: true }, { name: 'Amount', formatter: formatCurrency, constraint: {currency: 'EUR'}, editor: dojox.grid.editors.Dijit, editorClass: "dijit.form.CurrencyTextBox" }, { name: 'Amount', field: 4, formatter: formatCurrency, constraint: {currency: 'EUR'}, editor: dojox.grid.editors.Dijit, editorClass: "dijit.form.HorizontalSlider", width: 10} ]] }]; // ========================================================================== // UI Action // ========================================================================== addRow = function(){ grid.addRow([ "normal", false, "new", 'Now is the time for all good men to come to the aid of their party.', 99.99, 9.99, false ]); } </script> </head> <body> <h1>dojox.Grid Basic Editing test</h1> <br /> <div id="controls"> <button onclick="grid.refresh()">Refresh</button> <button onclick="grid.edit.focusEditor()">Focus Editor</button> <button onclick="grid.focus.next()">Next Focus</button> <button onclick="addRow()">Add Row</button> <button onclick="grid.removeSelectedRows()">Remove</button> <button onclick="grid.edit.apply()">Apply</button> <button onclick="grid.edit.cancel()">Cancel</button> <button onclick="grid.singleClickEdit = !grid.singleClickEdit">Toggle singleClickEdit</button> </div> <br /> <div id="grid" jsId="grid" dojoType="dojox.Grid" model="model" structure="gridLayout"></div> <br /> <div id="rowCount"></div> </body> </html>