customCombo.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. (function ($, win) {
  2. var child = undefined;
  3. var el;
  4. var Util = $.Util;
  5. var gridOpts = {
  6. columns: [
  7. {display : '名称', name :'fullName',width : 210, align: 'left'}
  8. ],
  9. allowAdjustColWidth : true,
  10. editorTopDiff : 41,
  11. headerRowHeight : 0,
  12. heightDiff : 0,
  13. pageSize: 15,
  14. method: "GET",
  15. pagesizeParmName : 'size',
  16. record : "totalCount",
  17. root : "detailModelList",
  18. rowHeight : 30,
  19. height: 200,
  20. rownumbers :false,
  21. switchPageSizeApplyComboBox: false,
  22. width :"98%",
  23. url: undefined
  24. };
  25. var comboOpts = {
  26. condition: {
  27. inputWidth: 90 ,
  28. width:0,
  29. labelWidth:0,
  30. hideSpace:true,
  31. fields: [{ name: 'param', label:''}]
  32. },
  33. child: undefined,
  34. grid: undefined,
  35. valueField: 'orgCode',//id
  36. textField: 'fullName',//name
  37. selectBoxHeight : 300,
  38. readonly: false,
  39. parms: {},
  40. onSelected: undefined,
  41. conditionSearchClick: function(g){
  42. var searchParm = g.rules.length > 0 ? g.rules[0].value : '';
  43. var parms = g.grid.get("parms");
  44. if(searchParm){
  45. parms.filters = "fullName?"+searchParm;
  46. }else{
  47. parms.filters = "";
  48. }
  49. g.grid.set({
  50. parms: parms,
  51. newPage: 1
  52. });
  53. g.grid.reload();
  54. }
  55. };
  56. function CustomCombo(el, url, options, grodOpt){
  57. var girdOptsCopy = grodOpt ? $.extend({}, gridOpts, grodOpt) : $.extend({}, gridOpts);
  58. var opts = $.extend({}, comboOpts, options);
  59. girdOptsCopy.url = url;
  60. opts.grid = girdOptsCopy;
  61. this.options = opts;
  62. this.ligerComboBox = el.ligerComboBox(this.options)
  63. this._el = el;
  64. }
  65. CustomCombo.prototype.getLigerComboBox = function () {
  66. return this.ligerComboBox;
  67. };
  68. CustomCombo.prototype.setValue = function (v) {
  69. this.ligerComboBox.setValue(v);
  70. return this;
  71. };
  72. CustomCombo.prototype.setText = function (t) {
  73. this.ligerComboBox.setText(t);
  74. return this;
  75. };
  76. CustomCombo.prototype.setValueText = function (v, t) {
  77. this.ligerComboBox.setValue(v);
  78. this.ligerComboBox.setText(t);
  79. return this;
  80. };
  81. CustomCombo.prototype.reload = function (parms) {
  82. var manager = this.ligerComboBox;
  83. var grid = manager.getGrid();
  84. if(grid)
  85. grid.set({
  86. newPage: 1,
  87. parms: parms
  88. });
  89. manager.set({parms: parms});
  90. manager.reload();
  91. manager.clear();
  92. };
  93. CustomCombo.prototype.on = function (eventKey, callFunc) {
  94. $(this.getLigerComboBox().unselect).on(eventKey, callFunc);
  95. };
  96. $.fn.customCombo = function (url, parms, selectedCall, child, readOnly, opts, grodOpt) {
  97. el = this;
  98. if(!selectedCall)
  99. selectedCall = function(id, name){
  100. if(!name || !id)
  101. return;
  102. $(el).blur();
  103. if(child){
  104. var childManager = child.ligerGetComboBoxManager();
  105. var parms = childManager.get("parms");
  106. var grid = childManager.getGrid();
  107. grid.set({
  108. //parms: parms,
  109. newPage: 1
  110. });
  111. parms.parentId = id;
  112. parms.parentName = name;
  113. childManager.set({
  114. parms: parms,
  115. newPage: 1
  116. });
  117. childManager.reload();
  118. childManager.clear();
  119. }
  120. }
  121. opts = $.extend({}, {
  122. parms: parms,
  123. child: child,
  124. onSelected: selectedCall,
  125. readonly: readOnly || false
  126. }, opts);
  127. var me = new CustomCombo(el, url, opts, grodOpt);
  128. if(child)
  129. me.on("changeValue",function () {
  130. child.ligerGetComboBoxManager().clear();
  131. });
  132. return me;
  133. }
  134. })(jQuery, window);