extgrid-json.js 2.8 KB

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