| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | <!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">    <title>Test meta config and metachange event support</title>    <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />    <link rel="stylesheet" type="text/css" href="../shared/example.css" />    <!-- GC -->    <script type="text/javascript" src="../../ext-all.js"></script>    <script type="text/javascript" src="../shared/examples.js"></script>    <script type="text/javascript" charset="utf-8">    Ext.Loader.setConfig({enabled: true});    Ext.require([        'Ext.grid.*',        'Ext.data.*',        'Ext.util.*',        'Ext.form.field.*'    ]);    Ext.define('MetaModel', {        extend: 'Ext.data.Model'    });    Ext.onReady(function(){        var metaStore = Ext.create('Ext.data.Store', {            model: 'MetaModel',            autoLoad: true,            proxy: {                type: 'ajax',                url: 'meta-config-basic.php',                reader: {                    type: 'json',                    root: 'data'                }            },            listeners: {                'metachange': function(store, meta) {                    grid.reconfigure(store, meta.columns);                }            }        });        var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {            clicksToMoveEditor: 1,            autoCancel: false        });        var grid = Ext.create('Ext.grid.Panel', {            width: 800,            height: 300,            title: 'Meta Grid',            store: metaStore,            columns: [],            renderTo: 'grid-ct',            tbar: [{                text: 'Reload Metadata',                handler: function() {                    metaStore.load();                }            }],            plugins: rowEditing        });    });    </script></head><body>    <h1>Basic Meta Configuration</h1>    <p>This example demonstrates reconfiguring a grid dynamically based on the metadata returned by the server<br>    (requires PHP). Click the "Reload Metadata" button to see a new randomized column set and data in the grid.</p>    <p>Note also that the grid is editable on double-click, and that the editors automatically update as well. See below for additional details.</p>    <div id="grid-ct" style="width:800px;height:300px;"></div>    <p style="margin-top:30px;">The server response is in this format:</p>    <pre><code>{  data: [{ ... }],  msg: "...",  total: 99,  metaData: {    fields: [{ ... }],    columns: [{ ... }],    idProperty: "id",    messageProperty: "msg",    root: "data"  }}    </code></pre>    <p>The store/model automatically read the <code>fields</code> config to reconfigure the data model, but you can add any    additional custom data into the <code>metaData</code> that you need. In this example we've added a <code>columns</code>    config that contains a grid-specific column configuration that can be passed to the <code>grid.reconfigure()</code> method    in the store's load event handler. You could easily add other widget-specific configurations into the response as well.</p></body></html>
 |