[关闭]
@lijiahong 2018-08-08T08:13:06.000000Z 字数 9551 阅读 492

山东商业职业技术学院JS

未分类


添加按钮、复选框

添加复选框

  1. function main(spreadsheetReport, isAjaxRefreshCallback) {
  2. var useralias = imports("bof.usermanager.UserService").getInstance().getCurrentUser().alias;
  3. var r = spreadsheetReport.getRowCount(); //获取电子表格总行数
  4. for (var i = 2; i < r; i++) {
  5. var td = spreadsheetReport.getCell(i, 10); //根据行列号获取单元格
  6. var img = document.createElement("input");
  7. img.type = "checkbox";
  8. img.value = spreadsheetReport.getCell(i, 4).innerText;
  9. //img.val2 = spreadsheetReport.getCell(i, 1).innerText;
  10. img.val2 = useralias;
  11. img.name = "deleteCheckbox";
  12. $(td).html(img);
  13. }
  14. var td = spreadsheetReport.getCell(1, 10); //根据行列号获取单元格
  15. var chx = document.createElement("input");
  16. chx.type = "checkbox";
  17. chx.name = "AllCheckbox";
  18. chx.onclick = function() {
  19. var objal = getByName("AllCheckbox");
  20. if (objal[0].checked) {
  21. var obj = getByName("deleteCheckbox");
  22. for (k in obj) {
  23. obj[k].checked = true;
  24. }
  25. } else {
  26. var obj = getByName("deleteCheckbox");
  27. for (k in obj) {
  28. obj[k].checked = false;
  29. }
  30. }
  31. }
  32. td.appendChild(chx);
  33. }
  34. //兼容IE获取NAME
  35. function getByName(Name) {
  36. var i=spreadsheetReport.elemSheetFrame.contentWindow.document.getElementsByTagName(Name);
  37. if (i > 0) {
  38. return i;
  39. } else {
  40. var aEle=spreadsheetReport.elemSheetFrame.contentWindow.document.getElementsByTagName('*');
  41. var arr = [];
  42. for (var i = 0; i < aEle.length; i++) {
  43. if (aEle[i].getAttribute("name") == Name) {
  44. arr.push(aEle[i])
  45. }
  46. }
  47. return arr;
  48. }
  49. }

数据处理

  1. function main(spreadsheetReport, isAjaxRefreshCallback) {
  2. //将工具栏隐藏
  3. if (spreadsheetReport.elem_trToolbar) {
  4. spreadsheetReport.elem_trToolbar.style.display = "none";
  5. }
  6. //添加按钮的单元格(支持合并单元格)
  7. var bjtd = spreadsheetReport.getCell(0, 9); //通过坐标获取单元格
  8. //编辑按钮属性设置start
  9. bjtd.style.cursor = "pointer"; //鼠标变手
  10. var bjbt = document.createElement("input");
  11. bjbt.type = "button";
  12. bjbt.value = "编辑";//按钮名称
  13. bjbt.name = "edit";//按钮name,建议唯一性
  14. //编辑按钮相应事件start
  15. bjbt.onclick = function() {
  16. var y = 0;
  17. var obj = getByName("deleteCheckbox");
  18. for (var k in obj) {
  19. if (obj[k].checked) {
  20. y = y + 1;//累加选择数
  21. }
  22. }
  23. if (y === 0) {
  24. alert("未选择任何数据");
  25. }
  26. if (y > 1) {
  27. alert("选择数据太多了,只能选择一个");
  28. }
  29. if (y == 1) {
  30. for (var k in obj) {
  31. if (obj[k].checked) {
  32. console.log(obj[k].value);//控制台输出数据(可选)
  33. console.log(obj[k].val2);//控制台输出数据(可选)
  34. var bmmc = seccode(b32sec(obj[k].val2));//获取部门名称
  35. var rwbh = seccode(b32sec(obj[k].value));//获取任务编号
  36. var res = "I53c0f01901649173917317960164fd9549cc6d9b";//定义跳转资源ID
  37. //定义URL
  38. var openUrls = "http://211.64.112.153/jxzg/vision/openresource.jsp?resid=I53c0f01901649173917317960164fdfbe9be7399" + "&bmmc=" + bmmc + "&rwbh=" + rwbh + "&res=" + res + "&showtoolbar=false&refresh=true";//定义打开的URL
  39. //弹出窗口
  40. var iWidth = 800; //弹出窗口的宽度;
  41. var iHeight = 700; //弹出窗口的高度;
  42. var windowObj = "newwindow";
  43. var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;
  44. var iTop = (window.screen.availHeight - 30 - iHeight) / 2; //获得窗口的垂直位置;
  45. var iLeft = (window.screen.availWidth - 10 - iWidth) / 2; //获得窗口的水平位置;
  46. if (isChrome) {
  47. curPopupWindow = window.open(openUrls, windowObj, 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',edge=raised, center=yes, help=no,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
  48. } else {
  49. curPopupWindow = window.showModelessDialog(openUrls, windowObj, "status:false;dialogWidth:" + iWidth + "px;dialogHeight:" + iHeight + "px;dialogLeft:" + iLeft + "px;dialogTop:" + iTop + "px;edge:Raised; center: Yes; help: No; resizable: No; status: No;scroll:no;");
  50. }
  51. //弹出窗口
  52. }
  53. }
  54. }
  55. };
  56. //编辑按钮响应事件end
  57. //编辑按钮属性设置end
  58. //导入按钮属性设置start
  59. var drbt = document.createElement("input");
  60. drbt.type = "button";
  61. drbt.value = "导入";
  62. drbt.name = "import";
  63. //导入按钮响应事件start
  64. drbt.onclick = function() {
  65. //注释掉的这一段为自定义iframe打开方式,但是官方提供了较为方便的导入页面,但是灵活性差,故保留原来的。
  66. // var dialogFactory = jsloader.resolve("freequery.dialog.dialogFactory");
  67. // var dialogConfig = {
  68. // title: "任务数据导入",
  69. // size: dialogFactory.size.LARGE,
  70. // dialogType: "modeless",
  71. // fullName: "freequery.dialog.BaseDialogEx",
  72. // closeBeforeCallback: true
  73. // };
  74. // var data = {};
  75. // dialogFactory.showDialog(dialogConfig, data, doOnCloseDlg, this);
  76. // setTimeout(function() {
  77. // var url = 'http://211.64.112.153/jxzg/vision/openimportconfig.jsp?resid=I53c0f0190163ca3cca3cf95e0163dd3983be4b51';
  78. // openReport(url)//openReport方法在最后
  79. // },
  80. // 500);
  81. if (!dialogFactory) {
  82. var dialogFactory = jsloader.resolve("freequery.dialog.dialogFactory");
  83. }
  84. var dialogConfig = {};
  85. dialogConfig.title = "Excel导入";//定义iframe标题
  86. dialogConfig.size = dialogFactory.size.LARGE;
  87. dialogConfig.fullName = "smartbi.spreadsheetreport.OpenImportConfigDialog";
  88. var configs = new Array();
  89. var importConfig = new Object();
  90. importConfig.id = "I53c0f0190163ca3cca3cf95e0163dd3983be4b51";//定义导入资源ID //需要打开excel数据导入模板的ID
  91. configs.push(importConfig);
  92. dialogFactory.showDialog(dialogConfig, [configs], doOnCloseDlg, this);//doOnCloseDlg为iframe窗口销毁后执行的方法
  93. };
  94. //导入按钮响应事件end
  95. //导入按钮属性设置start
  96. //删除按钮属性设置start
  97. var scbt = document.createElement("input");
  98. scbt.type = "button";
  99. scbt.value = "删除";
  100. scbt.name = "deleteCheckbox";
  101. //删除按钮响应事件start
  102. scbt.onclick = function() {
  103. var y = 0;
  104. var flag = confirm("确认删除选中数据吗?");//弹出提示框
  105. if (flag) {
  106. //点击确认之后执行
  107. var obj = getByName("deleteCheckbox");
  108. var z = 0;
  109. var x = 0;
  110. for (k in obj) {
  111. if (obj[k].checked) {
  112. x = x + 1;//统计选择个数
  113. y = 1;
  114. console.log(obj[k].value);//控制台输出数据(可选)
  115. console.log(obj[k].val2);//控制台输出数据(可选)
  116. var bmmc = obj[k].val2;
  117. var rwbh = obj[k].value;
  118. var modalWindow = jsloader.resolve("freequery.common.modalWindow");
  119. var util = jsloader.resolve("freequery.common.util");
  120. var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.HXK", "DELETE FROM HXK.RWGLCGRWYLB WHERE CGBMMC='" + bmmc + "' AND CGRWBH='" + rwbh + "'"]); //执行删除数据的sql
  121. if (!ret.succeeded) {
  122. z = z + 1;//统计删除成功数
  123. }
  124. }
  125. }
  126. if (y == 0) {
  127. alert("未选择任何数据");
  128. } else {
  129. if (z == 0) {
  130. alert("成功删除" + x + "条记录");
  131. spreadsheetReport.doRefresh();//报表刷新
  132. } else {
  133. alert("共选择" + z + "条记录," + "删除失败" + z + "条记录");
  134. spreadsheetReport.doRefresh();
  135. }
  136. }
  137. }
  138. }
  139. //删除按钮响应事件end
  140. //删除按钮属性设置end
  141. //导出按钮属性设置start
  142. var dcbt = document.createElement("input");
  143. dcbt.type = "button";
  144. dcbt.value = "导出";
  145. dcbt.name = "outputbutton";
  146. //导出按钮响应事件start
  147. dcbt.onclick = function() {
  148. spreadsheetReport.doExportMenuCloseUp("EXCEL");//直接导出为excel
  149. }
  150. //导出按钮响应事件end
  151. //导出按钮属性设置end
  152. //添加按钮属性设置start
  153. var tjbt = document.createElement("input");
  154. tjbt.type = "button";
  155. tjbt.value = "添加";
  156. tjbt.name = "insertbutton";
  157. //添加按钮相应事件start
  158. tjbt.onclick = function() {
  159. var useralias = imports("bof.usermanager.UserService").getInstance().getCurrentUser().alias;
  160. var bmmc = seccode(b32sec(useralias));
  161. var rwbh = seccode(b32sec("请输入任务编号"));
  162. var res = "I53c0f019016491739173179601651352535c7744";
  163. //定义URL
  164. var openUrls = "http://211.64.112.153/jxzg/vision/openresource.jsp?resid=I53c0f01901649173917317960164fdfbe9be7399" + "&bmmc=" + bmmc + "&rwbh=" + rwbh + "&res=" + res + "&showtoolbar=false&refresh=true";
  165. //弹出窗口
  166. var iWidth = 800; //弹出窗口的宽度;
  167. var iHeight = 700; //弹出窗口的高度;
  168. var windowObj = "newwindow";
  169. var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;
  170. var iTop = (window.screen.availHeight - 30 - iHeight) / 2; //获得窗口的垂直位置;
  171. var iLeft = (window.screen.availWidth - 10 - iWidth) / 2; //获得窗口的水平位置;
  172. if (isChrome) {
  173. curPopupWindow = window.open(openUrls, windowObj, 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',edge=raised, center=yes, help=no,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
  174. } else {
  175. curPopupWindow = window.showModelessDialog(openUrls, windowObj, "status:false;dialogWidth:" + iWidth + "px;dialogHeight:" + iHeight + "px;dialogLeft:" + iLeft + "px;dialogTop:" + iTop + "px;edge:Raised; center: Yes; help: No; resizable: No; status: No;scroll:no;");
  176. }
  177. }
  178. //添加按钮相应事件end
  179. //添加按钮属性设置end
  180. //刷新按钮属性设置start
  181. var sxbt = document.createElement("input");
  182. sxbt.type = "button";
  183. sxbt.value = "刷新";
  184. sxbt.name = "Refreshbutton";
  185. sxbt.onclick = function() {
  186. spreadsheetReport.doRefresh();
  187. }
  188. //刷新按钮属性设置end
  189. //单元格中添加按钮事件,按照顺序分别为刷新,添加,编辑,删除,导入,导出
  190. bjtd.appendChild(sxbt);
  191. bjtd.appendChild(tjbt);
  192. bjtd.appendChild(bjbt);
  193. bjtd.appendChild(scbt);
  194. bjtd.appendChild(drbt);
  195. bjtd.appendChild(dcbt);
  196. }
  197. //转换方法start
  198. function seccode(s) {
  199. var len = s.length;
  200. var rs = "";
  201. for (var i = 0; i < len; i++) {
  202. var k = s.substring(i, i + 1);
  203. rs += (i == 0 ? "" : ",") + s.charCodeAt(i);
  204. }
  205. return rs;
  206. }
  207. function b32sec(str) {
  208. return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
  209. return String.fromCharCode('0x' + p1);
  210. }));
  211. }
  212. //转换方法end
  213. //兼容IE获取复选框name
  214. function getByName(Name) {
  215. var i=spreadsheetReport.elemSheetFrame.contentWindow.document.getElementsByTagName(Name);
  216. if (i > 0) {
  217. return i;
  218. } else {
  219. var aEle=spreadsheetReport.elemSheetFrame.contentWindow.document.getElementsByTagName('*');
  220. var arr = [];
  221. for (var i = 0; i < aEle.length; i++) {
  222. if (aEle[i].getAttribute("name") == Name) {
  223. arr.push(aEle[i])
  224. }
  225. }
  226. return arr;
  227. }
  228. }
  229. //iframe关闭相应事件方法
  230. function doOnCloseDlg() {
  231. spreadsheetReport.doRefresh();
  232. }
  233. //自定义iframe打开链接方法
  234. // function openReport(url) {
  235. // // 替换成你的目标资源的url
  236. // //var url = 'http://211.64.112.153/jxzg/vision/openimportconfig.jsp?resid=I53c0f0190163ca3cca3cf95e0163dd3983be4b51';
  237. // var domutils = jsloader.resolve('freequery.lang.domutils');
  238. // var elem = window.dialog.dialogBody;
  239. // var btnOK = window.dialog.btnOK;
  240. // var btnCancel = window.dialog.btnCancel;
  241. // btnOK.style.display = 'none'
  242. // btnCancel.value = '关闭(C)';
  243. // elem.innerHTML = '<iframe src="' + url + '" width="100%" height="100%" border="0" frameSpacing="0" frameBorder="0"></iframe>'
  244. // }

选中行高亮

  1. function main(spreadsheetReport, isAjaxRefreshCallback) {
  2. spreadsheetReport.initTableGrid();
  3. var B3List = spreadsheetReport.getExpandedPositions("C3"); //表格扩展字段起始位置
  4. var B3_Start = spreadsheetReport.parseCellIndex(B3List[0])[0]; //解析出行号
  5. var B3_End = spreadsheetReport.parseCellIndex(B3List[B3List.length - 1])[0];
  6. spreadsheetReport.addListener(spreadsheetReport.elemSheetFrame.contentWindow.document.body, "click",
  7. function(e) {
  8. var t = e.target;
  9. while (t && t.tagName != "TR") {
  10. t = t.parentNode;
  11. }
  12. if (!t) return;
  13. var _focusTR = this._focusTR;
  14. var startCol;
  15. var endCol;
  16. if (t.rowIndex >= B3_Start && t.rowIndex <= B3_End) {
  17. this._focusTR = t;
  18. startCol = 1; //表格起始列,从0开始计算
  19. endCol = 10; //表格终止列,从0开始计算
  20. }
  21. if (_focusTR) {
  22. var rowTd = this.tableGrid[_focusTR.rowIndex];
  23. for (var i = this._focusStartCol; i <= this._focusEndCol; i++) {
  24. rowTd[i].style.backgroundColor = rowTd[i]._originalBackgroundColor
  25. }
  26. }
  27. this._focusStartCol = startCol;
  28. this._focusEndCol = endCol;
  29. var rowTd = this.tableGrid[t.rowIndex];
  30. for (var i = startCol; i <= endCol; i++) {
  31. if (typeof rowTd[i]._originalBackgroundColor == "undefined") {
  32. rowTd[i]._originalBackgroundColor = rowTd[i].style.backgroundColor;
  33. }
  34. rowTd[i].style.backgroundColor = "#AEEEEE";//颜色
  35. }
  36. },
  37. spreadsheetReport, "sheetFrameBody");
  38. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注