extgrid-xml.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. Ext.ns('FPC');
  2. FPC.ShowPage = function () {
  3. var myproxy = new Ext.data.HttpProxy ( {
  4. api : {
  5. read: "extgrid.cgi/Provider/Read/name/?format=xml",
  6. update: "extgrid.cgi/Provider/Update/name/?format=xml",
  7. create: "extgrid.cgi/Provider/Insert/name/?format=xml",
  8. destroy: "extgrid.cgi/Provider/Delete/name/?format=xml",
  9. }
  10. });
  11. var myreader = new Ext.data.XmlReader ({
  12. totalProperty: "total",
  13. record: "row",
  14. idProperty: "ID",
  15. successProperty: "success",
  16. messageProperty: "message",
  17. fields: ["ID", "LOGIN", "NAME","EMAIL","LASTLOGIN"]
  18. });
  19. var mywriter = new Ext.data.XmlWriter({
  20. encode: true,
  21. writeAllFields: true,
  22. idProperty: "ID",
  23. root: "records"
  24. });
  25. var data = new Ext.data.Store({
  26. proxy: myproxy,
  27. reader: myreader,
  28. writer: mywriter,
  29. autoSave: false,
  30. idProperty: "ID",
  31. });
  32. // Listen to errors.
  33. data.addListener('exception', function(proxy, type, action, options, res) {
  34. if (type === 'remote') {
  35. Ext.Msg.show({
  36. title: 'REMOTE EXCEPTION',
  37. msg: res.message,
  38. icon: Ext.MessageBox.ERROR,
  39. buttons: Ext.Msg.OK
  40. });
  41. }
  42. });
  43. data.load({ params:{start: 0, limit: 30}});
  44. var grid = new Ext.grid.EditorGridPanel({
  45. renderTo: Ext.getBody(),
  46. frame: true,
  47. title: "Known users",
  48. height: 600,
  49. width: 800,
  50. store: data,
  51. columns: [
  52. {header: 'ID', dataIndex: "ID", sortable: true, hidden: true},
  53. {header: 'Login', dataIndex: "LOGIN", sortable: true, editor: new Ext.form.TextField({allowBlank: false})},
  54. {header: 'Name', dataIndex: "NAME", sortable: true, editor: new Ext.form.TextField({allowBlank: false})},
  55. {header: 'Email', dataIndex: "EMAIL", sortable: true, editor: new Ext.form.TextField({allowBlank: false})},
  56. {header: 'Last login', dataIndex: "LASTLOGIN", sortable: true, editor: new Ext.form.TextField()},
  57. ],
  58. bbar: new Ext.PagingToolbar({
  59. pageSize: 30,
  60. store: data,
  61. displayInfo: true
  62. }),
  63. tbar : [{
  64. text: 'Add',
  65. iconCls: 'icon-add',
  66. handler: function(btn, ev) {
  67. var u = new grid.store.recordType();
  68. grid.stopEditing();
  69. grid.store.insert(0, u);
  70. grid.startEditing(0, 1);
  71. },
  72. scope: grid
  73. }, '-', {
  74. text: 'Delete',
  75. iconCls: 'icon-delete',
  76. handler: function(btn, ev) {
  77. var index = grid.getSelectionModel().getSelectedCell();
  78. if (!index) {
  79. return false;
  80. }
  81. var rec = grid.store.getAt(index[0]);
  82. grid.store.remove(rec);
  83. },
  84. scope: grid
  85. }, '-', {
  86. text: 'Save',
  87. iconCls: 'icon-save',
  88. handler: function(btn, ev) {
  89. grid.store.save();
  90. },
  91. scope: grid
  92. }
  93. ]
  94. });
  95. grid.show();
  96. }
  97. Ext.onReady(FPC.ShowPage);