extgrid-xml.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. Ext.ns('FPC');
  2. FPC.ShowPage = function () {
  3. var myproxy = new Ext.data.HttpProxy ( {
  4. api : {
  5. read: "extgrid.cgi/XMLProvider/AName/Read/",
  6. update: "extgrid.cgi/XMLProvider/AName/Update/",
  7. create: "extgrid.cgi/XMLProvider/AName/Insert/",
  8. destroy: "extgrid.cgi/XMLProvider/AName/Delete/",
  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. // F.ContentToStream(M);
  95. });
  96. grid.show();
  97. }
  98. Ext.onReady(FPC.ShowPage);