yvanui.yvgrid.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. /**
  2. * yvan.yvgrid.js
  3. * @author luoyifan
  4. * 2019-07-12 10:17:00
  5. */
  6. 'use strict';
  7. (function ($) {
  8. //jqxgrid.edit.js 第136行,tab键跳转
  9. //jqxgrid.js 第1947行,ensurecellvisible 列偏移
  10. if (!jqxGrid) {
  11. console.warn('no jqxGrid!!');
  12. return;
  13. }
  14. $.fn.yvgrid = function (options, param) {
  15. if (typeof options == 'string') {
  16. var method = $.fn.yvgrid.methods[options];
  17. if (method) {
  18. var args = [this];
  19. for (var i = 1; i < arguments.length; i++) {
  20. args.push(arguments[i]);
  21. }
  22. return method.apply(this, args);
  23. } else {
  24. console.error('not found method:' + options);
  25. }
  26. }
  27. options = options || {};
  28. return this.each(function () {
  29. var state = $.data(this, 'yvgrid');
  30. if (state) {
  31. $.extend(state.options, options);
  32. } else {
  33. $.data(this, 'yvgrid', {
  34. options: $.extend({}, $.fn.yvgrid.defaults, options)
  35. });
  36. }
  37. init(this, param);
  38. });
  39. };
  40. function buildDataSource($dom, easyuiOpt, columns, data, jqxOption) {
  41. var dataAdapter, source;
  42. //计算 datafields
  43. var datafields = [];
  44. for (var i = 0; i < columns.length; i++) {
  45. var row = {};
  46. if (columns[i].dataField === '__NO__') {
  47. continue;
  48. }
  49. if (columns[i].dataField === '__CB__') {
  50. continue;
  51. }
  52. if ($.type(columns[i].dataField) === 'string') {
  53. $.extend(row, {
  54. name: columns[i].dataField,
  55. type: 'string'
  56. });
  57. }
  58. if ($.type(columns[i].type) === 'string') {
  59. row.type = columns[i].type;
  60. }
  61. datafields.push(row);
  62. }
  63. if (easyuiOpt.editable && $.type(easyuiOpt.url) === 'string') {
  64. //如果是可编辑表格,不能直接用 dataAdapter 读取(会有bug)
  65. //bug 详情见 https://www.jqwidgets.com/community/topic/grid-resizing-everpresentrow/
  66. console.error('可编辑表格,不能用 url 和 mtype 读取');
  67. $.yvan.alert('可编辑表格,不能用 url 和 mtype 读取');
  68. data = [];
  69. }
  70. //本地直接给数据
  71. if ($.type(data) === 'array') {
  72. source = {
  73. localdata: data,
  74. datatype: "array",
  75. id: easyuiOpt.idField,
  76. //datafields: datafields, //这里不能给定 fields ,给定了就无法动态计算列了
  77. //beforeprocessing: function (root) { //本地数据 不支持分页数
  78. // $dom.jqxGrid('source')._source.totalrecords = root.length;
  79. //}
  80. };
  81. $.fn.yvgrid.filter.sourceFilterOption($dom, easyuiOpt, source, jqxOption);
  82. $.fn.yvgrid.edit.sourceOption($dom, easyuiOpt, source);
  83. dataAdapter = new $.jqx.dataAdapter(source);
  84. } else {
  85. source = {
  86. type: easyuiOpt.mtype,
  87. datatype: "json",
  88. //datafields: datafields, //这里不能给定 fields ,给定了就无法动态计算列了
  89. autoBind: false,
  90. cache: false,
  91. data: easyuiOpt.queryParams,
  92. url: easyuiOpt.url,
  93. id: easyuiOpt.idField,
  94. beforeprocessing: function (root) {
  95. if (root.pagination) {
  96. //$dom.jqxGrid('source')._source.totalrecords = root.pagination.count;
  97. source.totalrecords = parseInt(root.pagination.count);
  98. } else if (root.data) {
  99. //$dom.jqxGrid('source')._source.totalrecords = root.data.length;
  100. source.totalrecords = root.data.length;
  101. } else {
  102. //$dom.jqxGrid('source')._source.totalrecords = 0;
  103. source.totalrecords = 0;
  104. }
  105. }
  106. };
  107. if (easyuiOpt.sortable) {
  108. $.extend(source, {
  109. sort: function () {
  110. $dom.jqxGrid('updatebounddata', 'sort');
  111. },
  112. });
  113. }
  114. $.fn.yvgrid.filter.sourceFilterOption($dom, easyuiOpt, source, jqxOption);
  115. $.fn.yvgrid.edit.sourceOption($dom, easyuiOpt, source);
  116. var adapterOpt = {
  117. //contentType: 'application/json; charset=utf-8',
  118. autoBind: false,
  119. beforeSend: function (xhr, status) {
  120. xhr.setRequestHeader("Authorization", $.cookie('auth'));
  121. $dom.down('yvgridpage').pagination('loading');
  122. },
  123. loadError: function (xhr, status, error) {
  124. console.log(error);
  125. },
  126. downloadComplete: function (root) {
  127. return {
  128. records: root.data
  129. };
  130. }
  131. };
  132. if (easyuiOpt.mtype === 'GET' || easyuiOpt.mtype === 'get') {
  133. adapterOpt.contentType = 'application/json; charset=utf-8';
  134. }
  135. dataAdapter = new $.jqx.dataAdapter(source, adapterOpt);
  136. }
  137. return dataAdapter;
  138. }
  139. function buildColumns($dom, option) {
  140. /*===== Columns ======*/
  141. var columns = option.columns;
  142. if ($.type(columns) === 'array' && $.type(columns[0]) === 'array') {
  143. //easyui 的设置方法
  144. columns = columns[0];
  145. var columnsNew = [];
  146. for (var i = 0; i < columns.length; i++) {
  147. if (columns[i].hidden === true) {
  148. continue;
  149. }
  150. var vv = columns[i];
  151. var ret = {
  152. dataField: vv.field,
  153. text: vv.title,
  154. type: vv.type || 'string'
  155. };
  156. if (vv.type === 'number') {
  157. $.extend(ret, { cellsalign: 'right', cellsformat: 'd' });
  158. }
  159. if ($.type(vv.minwidth) !== 'undefined') {
  160. ret.minwidth = vv.minwidth;
  161. }
  162. if ($.type(vv.sortable) === 'boolean') {
  163. ret.sortable = vv.sortable;
  164. }
  165. if ($.type(vv.width) !== 'undefined') {
  166. ret.width = vv.width;
  167. } else {
  168. if (option.autoSizeColumns) {
  169. ret.width = 80;
  170. }
  171. }
  172. if (vv.align) {
  173. ret.cellsalign = vv.align;
  174. } else {
  175. ret.cellsalign = 'left';
  176. }
  177. if ((vv.editor && vv.editor.xtype === 'checkbox') || vv.type === 'bool') {
  178. var onOff = { on: vv.on, off: vv.off };
  179. if (vv.editor && vv.editor.xtype === 'checkbox' && $.type(vv.editor.on) === 'string' && $.type(vv.editor.off) === 'string') {
  180. onOff.on = vv.editor.on;
  181. onOff.off = vv.editor.off;
  182. }
  183. ret.cellsrenderer = (function (onOffValue) {
  184. return function (row, columnfield, value, defaulthtml, columnproperties) {
  185. if ($.trim(value) === onOffValue.on) {
  186. return '<div style="position: absolute; top: 50%; left: 50%; margin-top: -9px; margin-left: -12px; display: block;" class="jqx-widget jqx-checkbox" checked="checked"><div class="jqx-checkbox-default jqx-fill-state-normal jqx-rc-all" style="display: block"><div style="width: 16px; height: 16px;"><span style="width: 16px; height: 16px;" class="jqx-checkbox-check-checked"></span></div></div><div style="clear: both;"></div></div>';
  187. }
  188. if ($.trim(value) === onOffValue.off) {
  189. return '<div style="position: absolute; top: 50%; left: 50%; margin-top: -9px; margin-left: -12px; display: block;" class="jqx-widget jqx-checkbox"><div class="jqx-checkbox-default jqx-fill-state-normal jqx-rc-all" style="display: block"><div style="width: 16px; height: 16px;"><span style="width: 16px; height: 16px;"></span></div></div><div style="clear: both;"></div></div>';
  190. }
  191. return '<div class="jqx-grid-cell-center-align" style="margin-top: 8.5px;">' + value + '</div>';
  192. };
  193. })(onOff);
  194. }
  195. if ($.type(vv.formatter) === 'function') {
  196. ret.cellsrenderer = (function (formatter) {
  197. return function (row, columnfield, value, defaulthtml, columnproperties, rowdata) {
  198. value = formatter.call(this, value, rowdata);
  199. if (!columnproperties) {
  200. columnproperties = { cellsalign: 'left' };
  201. }
  202. return '<div class="jqx-grid-cell-' + columnproperties.cellsalign + '-align" style="margin-top: 8.5px;">' + value + '</div>';
  203. };
  204. })(vv.formatter);
  205. } else if ($.type(vv.formatter) === 'array') {
  206. ret.cellsrenderer = (function (formatter) {
  207. return function (row, columnfield, value, defaulthtml, columnproperties) {
  208. for (var i = 0; i < formatter.length; i++) {
  209. if (formatter[i]['id'] === $.trim(value)) {
  210. value = formatter[i]['text'];
  211. break;
  212. }
  213. }
  214. if (!columnproperties) {
  215. columnproperties = { cellsalign: 'left' };
  216. }
  217. return '<div class="jqx-grid-cell-' + columnproperties.cellsalign + '-align" style="margin-top: 8.5px;">' + value + '</div>';
  218. };
  219. })(vv.formatter);
  220. }
  221. if (vv.titleAlign === 'left') {
  222. ret.renderer = function (value) {
  223. return '<div class="jqx-grid-cell-left-align" style="margin-top: 8.5px;">' + value + '</div>';
  224. }
  225. } else if (vv.titleAlign === 'right') {
  226. ret.renderer = function (value) {
  227. return '<div class="jqx-grid-cell-right-align" style="margin-top: 8.5px;">' + value + '</div>';
  228. }
  229. } else {
  230. ret.renderer = function (value) {
  231. return '<div class="jqx-grid-cell-center-align" style="margin-top: 8.5px;">' + value + '</div>';
  232. }
  233. }
  234. $.fn.yvgrid.edit.columnOption(vv, ret);
  235. $.fn.yvgrid.filter.columnFilterOption($dom, option, vv, ret);
  236. columnsNew.push(ret);
  237. }
  238. columns = columnsNew;
  239. }
  240. if (option.checkbox) {
  241. columns = [{
  242. pinned: true,
  243. exportable: false,
  244. text: "",
  245. width: 60,
  246. columntype: 'bool',
  247. resizable: false,
  248. sortable: false,
  249. filterable: false,
  250. dataField: '__CB__',
  251. editable: true,
  252. cellsAlign: 'right',
  253. align: 'right',
  254. cellsrenderer: function (row, column, value) {
  255. if (value) {
  256. return '<div class="jqx-grid-cell-right-align" style="margin-top: 8.5px;">' +
  257. '<div class="yvan-checkbox yvan-checked" tabindex="0" lay-skin="primary">' +
  258. '<i class="fa fa-check"></i>' +
  259. '</div>' +
  260. '</div>';
  261. }
  262. return '<div class="jqx-grid-cell-right-align" style="margin-top: 8.5px;">' +
  263. '<div class="yvan-checkbox" tabindex="0" lay-skin="primary">' +
  264. '<i class="fa fa-check"></i>' +
  265. '</div>' +
  266. '</div>';
  267. },
  268. }].concat(columns);
  269. }
  270. if (option.rownumbers) {
  271. columns = [{
  272. pinned: true,
  273. exportable: false,
  274. text: "",
  275. columntype: 'number',
  276. resizable: false,
  277. sortable: false,
  278. filterable: false,
  279. dataField: '__NO__',
  280. editable: false,
  281. cellsAlign: 'right',
  282. align: 'right',
  283. cellsrenderer: function (row, column, value) {
  284. return '<div class="jqx-grid-cell-right-align" style="margin-top: 8.5px;">' + (value + 1) + '</div>';
  285. },
  286. createEverPresentRowWidget: function (datafield, htmlElement, popup, addCallback) {
  287. var editor = $("<div class='asterisk'>*</div>").appendTo(htmlElement);
  288. return editor;
  289. },
  290. initEverPresentRowWidget: function (datafield, htmlElement) {
  291. },
  292. getEverPresentRowWidgetValue: function (datafield, htmlElement, validate) {
  293. },
  294. resetEverPresentRowWidgetValue: function (datafield, htmlElement) {
  295. }
  296. }].concat(columns);
  297. }
  298. return columns;
  299. }
  300. function addRow($dom, row) {
  301. return $dom.each(function () {
  302. var target = this;
  303. var $dom = $(target);
  304. $dom.jqxGrid('addrow', null, row);
  305. //$dom.jqxGrid('selectrow', 0);
  306. //$dom.jqxGrid('beginrowedit', 0);
  307. });
  308. }
  309. $.fn.yvgrid.methods = {
  310. /**
  311. * 添加数据行
  312. */
  313. addRow: addRow,
  314. appendRow: addRow,
  315. /**
  316. * 获取全部数据行
  317. */
  318. getData: function ($dom) {
  319. return $dom.jqxGrid('getrows');
  320. },
  321. /**
  322. * 获取所有被勾选的数据
  323. */
  324. getChecked: function ($dom) {
  325. return $dom.jqxGrid('getrows').filter(function (item) {
  326. return (item.__CB__);
  327. });
  328. },
  329. /**
  330. * 设置勾选的行(可以是ID数组,可以是ID)
  331. */
  332. setChecked: function ($dom, ids) {
  333. if ($.type(ids) === 'array') {
  334. ids.forEach(function (id) {
  335. $.fn.yvgrid.selection.setCheckboxById($dom, id, true);
  336. });
  337. }
  338. $.fn.yvgrid.selection.setCheckboxById($dom, ids, true);
  339. },
  340. /**
  341. * 清空所有被勾选的数据
  342. */
  343. checkedClear: function ($dom) {
  344. var rows = $dom.jqxGrid('getrows');
  345. rows.forEach(function (r) {
  346. $.fn.yvgrid.selection.setCheckbox($dom, r.boundindex, false);
  347. });
  348. },
  349. /**
  350. * 勾选所有行
  351. */
  352. checkedAll: function ($dom) {
  353. var rows = $dom.jqxGrid('getrows');
  354. rows.forEach(function (r) {
  355. $.fn.yvgrid.selection.setCheckbox($dom, r.boundindex, true);
  356. });
  357. },
  358. /**
  359. * 清空表格
  360. */
  361. clear: function ($dom) {
  362. $dom.jqxGrid('clear');
  363. },
  364. /**
  365. * 获取全部数据行
  366. */
  367. getRowData: function ($dom) {
  368. return $dom.jqxGrid('getrows');
  369. },
  370. /**
  371. * 刷新数据
  372. */
  373. refresh: function (jq) {
  374. return jq.each(function () {
  375. $(this).jqxGrid('refresh');
  376. });
  377. },
  378. /**
  379. * 获取当前已被选的行的 rowid
  380. */
  381. rowIndex: function ($dom) {
  382. return $dom.jqxGrid('getselectedrowindex');
  383. },
  384. /**
  385. * 获取当前行的 boundIndex
  386. */
  387. rowBoundIndex: function ($dom) {
  388. var rowIndex = $dom.jqxGrid('getselectedrowindex');
  389. if ($.type(rowIndex) === 'undefined' || rowIndex < 0) {
  390. return;
  391. }
  392. var rowid = $dom.jqxGrid('getrowid', rowIndex);
  393. return $dom.jqxGrid('getrowboundindexbyid', rowid);
  394. },
  395. /**
  396. * 在某个单元格上显示校验错误
  397. */
  398. showError: function ($dom, rowBoundIndex, column, msg) {
  399. if ($.type(rowBoundIndex) === 'undefined' || rowBoundIndex < 0) {
  400. console.error('showError not assign rowBoundIndex');
  401. return;
  402. }
  403. $dom.jqxGrid('showvalidationpopup', rowBoundIndex, column, msg);
  404. },
  405. /**
  406. * 更改数据源, 或重新从后台拉取数据
  407. */
  408. reload: function (jq, option) {
  409. var hasChangeParamters = ($.type(option) === 'object');
  410. if (!hasChangeParamters) {
  411. return jq.jqxGrid('updatebounddata');
  412. }
  413. return jq.each(function () {
  414. var target = this;
  415. var state = $.data(target, 'yvgrid');
  416. var $dom = $(target);
  417. option = $.extend(state.options, option);
  418. var columns = buildColumns($dom, option);
  419. var jqxOption = {};
  420. var dataAdapter = buildDataSource($dom, option, columns, option.data, jqxOption);
  421. $.extend(jqxOption, {
  422. source: dataAdapter
  423. });
  424. //console.log('build source queryParams:', option.queryParams);
  425. $dom.jqxGrid(jqxOption);
  426. delete option.data;
  427. //如果之前的页码大于0,就跳到第0页
  428. var paginginformation = $dom.jqxGrid('getpaginginformation');
  429. if (paginginformation.pagenum > 0) {
  430. $dom.jqxGrid('gotopage', 0);
  431. }
  432. });
  433. },
  434. showLoading: function ($dom) {
  435. $dom.jqxGrid('showloadelement');
  436. },
  437. hideLoading: function ($dom) {
  438. $dom.jqxGrid('hideloadelement');
  439. }
  440. };
  441. function init(target, context) {
  442. var state = $.data(target, 'yvgrid');
  443. var easyuiOpt = state.options;
  444. var $dom = $(target);
  445. state.editCount = 0;
  446. var columns = buildColumns($dom, easyuiOpt);
  447. /*===== 复制新的 option ======*/
  448. var jqxOption = {
  449. height: easyuiOpt.height,
  450. width: easyuiOpt.width,
  451. sorttogglestates: 0, //Disable column header click sort
  452. keyboardnavigation: false,
  453. columnsautoresize: false,
  454. enabletooltips: true,
  455. enablebrowserselection: true,
  456. altrows: true,
  457. clipboard: true,
  458. columnsresize: true,
  459. columns: columns,
  460. virtualmode: true, //virtualmode/rendergridrows 不能挪动, 如果挪走可能会造成发多次 AJAX
  461. rendergridrows: function (obj) {
  462. var source = $dom.jqxGrid('source');
  463. var localdata = source._source.localdata;
  464. if (!localdata) {
  465. return obj.data;
  466. } else {
  467. return localdata.slice(obj.startindex, obj.endindex);
  468. }
  469. },
  470. rendered: function () {
  471. //console.log('rendered', this, arguments);
  472. },
  473. handlekeyboardnavigation: function (event) {
  474. var ret;
  475. ret = $.fn.yvgrid.selection.handlekeyboardnavigation.call(this, event);
  476. if (ret === true) {
  477. return ret;
  478. }
  479. ret = $.fn.yvgrid.edit.handlekeyboardnavigation.call(this, event);
  480. if (ret === true) {
  481. return ret;
  482. }
  483. if ($.type(easyuiOpt.onKeyDown) === 'function') {
  484. ret = easyuiOpt.onKeyDown.call(this.element, event);
  485. if (ret === true) {
  486. return ret;
  487. }
  488. }
  489. }
  490. };
  491. /*===== 编辑状态 ======*/
  492. $.fn.yvgrid.edit.gridOption($dom, easyuiOpt, jqxOption);
  493. /*===== 数据源 ======*/
  494. var dataAdapter = buildDataSource($dom, easyuiOpt, columns, easyuiOpt.data, jqxOption);
  495. $.extend(jqxOption, {
  496. source: dataAdapter
  497. });
  498. delete easyuiOpt.data;
  499. /*===== 排序 ======*/
  500. jqxOption.sortable = easyuiOpt.sortable;
  501. /*===== 分页 ======*/
  502. if (easyuiOpt.pagination === false) {
  503. $.extend(jqxOption, {
  504. pageable: false,
  505. });
  506. } else {
  507. $dom.on('bindingcomplete', function () {
  508. $(this).down('yvgridpage').pagination('loaded');
  509. });
  510. $.extend(jqxOption, {
  511. pageable: true,
  512. pagesize: easyuiOpt.pageSize,
  513. pagesizeoptions: easyuiOpt.pageList,
  514. pagerrenderer: function () {
  515. var $grid = $(this.element);
  516. var datainfo = $grid.jqxGrid('getdatainformation');
  517. var paginginfo = datainfo.paginginformation;
  518. var $dom = $('<div xtype="yvgridpage"></div>');
  519. $dom.pagination({
  520. pageNumber: paginginfo.pagenum + 1,
  521. total: datainfo.rowscount,
  522. pageSize: paginginfo.pagesize,
  523. pageList: jqxOption.pagesizeoptions,
  524. onSelectPage: function (pageNumber, pageSize) {
  525. if ($(this).pagination("options").loading) {
  526. $.yvan.msg('请不要操作过快');
  527. $(this).pagination('refresh', {
  528. pageNumber: paginginfo.pagenum + 1,
  529. total: datainfo.rowscount,
  530. pageSize: paginginfo.pagesize
  531. });
  532. return;
  533. }
  534. $grid.jqxGrid('gotopage', pageNumber - 1);
  535. },
  536. onRefresh: function () {
  537. $grid.jqxGrid('gotopage', paginginfo.pagenum);
  538. },
  539. onChangePageSize: function (pageSize) {
  540. if ($(this).pagination("options").loading) {
  541. $.yvan.msg('请不要操作过快');
  542. $(this).pagination('refresh', {
  543. pageNumber: paginginfo.pagenum + 1,
  544. total: datainfo.rowscount,
  545. pageSize: paginginfo.pagesize
  546. });
  547. return;
  548. }
  549. $grid.jqxGrid({ pagesize: pageSize });
  550. }
  551. });
  552. return $dom;
  553. },
  554. });
  555. }
  556. /*====== 工具栏 ======*/
  557. if (easyuiOpt.hasOwnProperty('toolbar')) {
  558. var toolbar = easyuiOpt.toolbar;
  559. $.extend(jqxOption, {
  560. showtoolbar: true,
  561. rendertoolbar: function ($dom) {
  562. if ($.type(toolbar) === 'array') {
  563. $dom.power('renderEach', {
  564. $target: $dom,
  565. items: toolbar,
  566. context: context
  567. });
  568. } else if ($.type(toolbar) === 'object') {
  569. $dom.power('renderDispatch', {
  570. $target: $dom,
  571. item: toolbar,
  572. context: context
  573. });
  574. }
  575. },
  576. });
  577. if (toolbar.hasOwnProperty('height')) {
  578. jqxOption.toolbarheight = toolbar.height || 38;
  579. }
  580. }
  581. /*====== 选择模式 ======*/
  582. $.fn.yvgrid.selection.gridOption($dom, easyuiOpt, jqxOption);
  583. /*====== 过滤行 ======*/
  584. $.fn.yvgrid.filter.gridOption($dom, easyuiOpt, jqxOption);
  585. $dom.find('.jqx-grid-selectionarea').next('span').remove();
  586. //execute DOM
  587. $dom.jqxGrid(jqxOption);
  588. $dom.on("columnclick", function (event) {
  589. $(this).jqxGrid('autoresizecolumn', event.args.datafield, 'all');
  590. });
  591. $dom.on('rowdoubleclick', function (event) {
  592. if ($.type(easyuiOpt.onDblClickRow) === 'function') {
  593. easyuiOpt.onDblClickRow.call(this, event.args.rowindex, event);
  594. }
  595. });
  596. //$dom.on("cellbeginedit", function (event) {
  597. // $.fn.yvgrid.edit.cellbeginedit($dom, event);
  598. //});
  599. //$dom.on("cellendedit", function (event) {
  600. // $.fn.yvgrid.edit.cellendedit($dom, event);
  601. //});
  602. //$dom.on("columnresized", function (event) {
  603. // $.fn.yvgrid.edit.columnresized($dom, event);
  604. //});
  605. if (!easyuiOpt.border) {
  606. $dom.css({
  607. "border-style": 'none'
  608. });
  609. }
  610. return $dom;
  611. }
  612. $.fn.power.defaults.xtype.yvgrid = function ($targetDOM, option, context) {
  613. var id = $.yvan.createId('yvgrid');
  614. var $dom = $('<div id="' + id + '" xtype="yvgrid"><div xtype="loader"></div></div>');
  615. $targetDOM.append($dom);
  616. return $dom.yvgrid(option, context);
  617. };
  618. $.fn.yvgrid.defaults = {
  619. rownumbers: true,
  620. checkbox: false,
  621. width: '100%',
  622. height: '100%',
  623. pageSize: 20,
  624. autoSizeColumns: true,
  625. pageList: [20, 50, 100, 200, 500, 1000],
  626. sortable: false,
  627. filter: false,
  628. pagination: true,
  629. border: false,
  630. editOnSelected: false,
  631. editable: false
  632. };
  633. })(jQuery);