No Description

pageDataGrid.js 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. $.define(["jQuery", "util", "form", "code", "pager"], "pagedatagrid", function($, util, form, code, pager) {
  2. var qf = ".dt-form",
  3. qt = ".dt-tpl",
  4. qp = ".dt-pager",
  5. derr = {},
  6. dajaxCfg = {},
  7. configPageIndex = function(fn, data) {
  8. if(fn && data && data.data && data.data.length) {
  9. var b = (data.pageNo - 1) * data.pageSize;
  10. data.data.forEach(function(obj) {
  11. ++b;
  12. obj[fn] = b;
  13. });
  14. }
  15. },
  16. build = function($e, options) {
  17. if($e.length && $e.length === 1) {
  18. var config = { e: derr, ajax: dajaxCfg };
  19. var ele = config.ele = $($e[0]);
  20. config.f = form.build(ele.find(qf));
  21. config.c = code.parseCode(ele.find(qt)[0]);
  22. config.p = pager(ele.find(qp));
  23. config.uri = ele.attr("loadUri");
  24. config.pnn = ele.attr("pagerPrefix") ? "_pageNo" : "pageNo";
  25. config.psn = ele.attr("pagerPrefix") ? "_pageSize" : "pageSize";
  26. config.pageSize = parseInt(ele.attr("pageSize") || "1");
  27. config.pageNo = parseInt(ele.attr("pageNo") || "10");
  28. config.pageIndex = ele.attr("pageIndex");
  29. if(options) {
  30. $.extend(config, options);
  31. };
  32. var ret = {
  33. code: config.c,
  34. form: config.f,
  35. queryParam:function(){
  36. return config.cache;
  37. },
  38. load: function() {
  39. if(config.f.validate()) {
  40. config.cache = config.f.val();
  41. config.cache[config.pnn] = config.pageNo;
  42. config.cache[config.psn] = config.pageSize;
  43. this.reload();
  44. }
  45. },
  46. reload: function() {
  47. util.get(config.uri, config.cache, function(data) {
  48. configPageIndex(config.pageIndex, data);
  49. config.c.val(data.data);
  50. config.p.paint(data);
  51. }, config.e, config.ajax);
  52. },
  53. error: function(eh) {
  54. config.e = eh;
  55. },
  56. beforeFill: function(h) {
  57. config.c.before(h);
  58. },
  59. ajaxConfig: function(cfg) {
  60. config.ajax = cfg;
  61. }
  62. };
  63. config.p.onGo(function(no) {
  64. config.cache[config.pnn] = no;
  65. ret.reload();
  66. });
  67. return ret;
  68. };
  69. };
  70. $.fn.pdg = function(option) {
  71. if(this.length && this.length === 1) {
  72. return build(this, option);
  73. }
  74. };
  75. return { build: build };
  76. });