12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- Ext.require([
- 'Ext.grid.*',
- 'Ext.data.*',
- 'Ext.panel.*',
- 'Ext.layout.container.Border'
- ]);
- Ext.onReady(function(){
- Ext.define('Book',{
- extend: 'Ext.data.Model',
- fields: [
- // set up the fields mapping into the xml doc
- // The first needs mapping, the others are very basic
- {name: 'Author', mapping: 'ItemAttributes > Author'},
- 'Title',
- 'Manufacturer',
- 'ProductGroup',
- 'DetailPageURL'
- ]
- });
- // create the Data Store
- var store = Ext.create('Ext.data.Store', {
- model: 'Book',
- proxy: {
- // load using HTTP
- type: 'ajax',
- url: 'sheldon.xml',
- // the return will be XML, so lets set up a reader
- reader: {
- type: 'xml',
- record: 'Item',
- totalProperty : 'total'
- }
- }
- });
- // create the grid
- var grid = Ext.create('Ext.grid.Panel', {
- store: store,
- columns: [
- {text: "Author", width: 120, dataIndex: 'Author', sortable: true},
- {text: "Title", flex: 1, dataIndex: 'Title', sortable: true},
- {text: "Manufacturer", width: 115, dataIndex: 'Manufacturer', sortable: true},
- {text: "Product Group", width: 100, dataIndex: 'ProductGroup', sortable: true}
- ],
- forceFit: true,
- height:210,
- split: true,
- region: 'north'
- });
-
- // define a template to use for the detail view
- var bookTplMarkup = [
- 'Title: <a href="{DetailPageURL}" target="_blank">{Title}</a><br/>',
- 'Author: {Author}<br/>',
- 'Manufacturer: {Manufacturer}<br/>',
- 'Product Group: {ProductGroup}<br/>'
- ];
- var bookTpl = Ext.create('Ext.Template', bookTplMarkup);
- Ext.create('Ext.Panel', {
- renderTo: 'binding-example',
- frame: true,
- title: 'Book List',
- width: 540,
- height: 400,
- layout: 'border',
- items: [
- grid, {
- id: 'detailPanel',
- region: 'center',
- bodyPadding: 7,
- bodyStyle: "background: #ffffff;",
- html: 'Please select a book to see additional details.'
- }]
- });
-
- // update panel body on selection change
- grid.getSelectionModel().on('selectionchange', function(sm, selectedRecord) {
- if (selectedRecord.length) {
- var detailPanel = Ext.getCmp('detailPanel');
- bookTpl.overwrite(detailPanel.body, selectedRecord[0].data);
- }
- });
- store.load();
- });
|