restful.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:3k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.0.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. // Application instance for showing user-feedback messages.
  8. var App = new Ext.App({});
  9. // Create a standard HttpProxy instance.
  10. var proxy = new Ext.data.HttpProxy({
  11.     url: 'app.php/users'
  12. });
  13. // Typical JsonReader.  Notice additional meta-data params for defining the core attributes of your json-response
  14. var reader = new Ext.data.JsonReader({
  15.     totalProperty: 'total',
  16.     successProperty: 'success',
  17.     idProperty: 'id',
  18.     root: 'data'
  19. }, [
  20.     {name: 'id'},
  21.     {name: 'email', allowBlank: false},
  22.     {name: 'first', allowBlank: false},
  23.     {name: 'last', allowBlank: false}
  24. ]);
  25. // The new DataWriter component.
  26. var writer = new Ext.data.JsonWriter();
  27. // Typical Store collecting the Proxy, Reader and Writer together.
  28. var store = new Ext.data.Store({
  29.     id: 'user',
  30.     restful: true,     // <-- This Store is RESTful
  31.     proxy: proxy,
  32.     reader: reader,
  33.     writer: writer,    // <-- plug a DataWriter into the store just as you would a Reader
  34.     listeners: {
  35.         write : function(store, action, result, response, rs) {
  36.             App.setAlert(response.success, response.message);
  37.         }
  38.     }
  39. });
  40. // Let's pretend we rendered our grid-columns with meta-data from our ORM framework.
  41. var userColumns =  [
  42.     {header: "ID", width: 40, sortable: true, dataIndex: 'id'},
  43.     {header: "Email", width: 100, sortable: true, dataIndex: 'email', editor: new Ext.form.TextField({})},
  44.     {header: "First", width: 50, sortable: true, dataIndex: 'first', editor: new Ext.form.TextField({})},
  45.     {header: "Last", width: 50, sortable: true, dataIndex: 'last', editor: new Ext.form.TextField({})}
  46. ];
  47. // load the store immeditately
  48. store.load();
  49. Ext.onReady(function() {
  50.     Ext.QuickTips.init();
  51.     // use RowEditor for editing
  52.     var editor = new Ext.ux.grid.RowEditor({
  53.         saveText: 'Update'
  54.     });
  55.     // Create a typical GridPanel with RowEditor plugin
  56.     var userGrid = new Ext.grid.GridPanel({
  57.         renderTo: 'user-grid',
  58.         iconCls: 'icon-grid',
  59.         frame: true,
  60.         title: 'Users',
  61.         autoScroll: true,
  62.         height: 300,
  63.         store: store,
  64.         plugins: [editor],
  65.         columns : userColumns,
  66.         tbar: [{
  67.             text: 'Add',
  68.             iconCls: 'silk-add',
  69.             handler: onAdd
  70.         }, '-', {
  71.             text: 'Delete',
  72.             iconCls: 'silk-delete',
  73.             handler: onDelete
  74.         }, '-'],
  75.         viewConfig: {
  76.             forceFit: true
  77.         }
  78.     });
  79.     /**
  80.      * onAdd
  81.      */
  82.     function onAdd(btn, ev) {
  83.         var u = new userGrid.store.recordType({
  84.             first : '',
  85.             last: '',
  86.             email : ''
  87.         });
  88.         editor.stopEditing();
  89.         userGrid.store.insert(0, u);
  90.         editor.startEditing(0);
  91.     }
  92.     /**
  93.      * onDelete
  94.      */
  95.     function onDelete() {
  96.         var rec = userGrid.getSelectionModel().getSelected();
  97.         if (!rec) {
  98.             return false;
  99.         }
  100.         userGrid.store.remove(rec);
  101.     }
  102. });