请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
剧终(uid:66158)
职业资格认证:FCA-FineReport | FCA-业务分析理论
cpt内使用网页框(动态调整网页框大小)
最近制作一个上报页面感觉用到的功能点还挺多,今天有时间整理一下分享出来基本都是思路,有了思路,剩下的都好解决。 需求:用户上报一段json,然后可以用表格显示出json的层级关系,并且用户可以对每个节点添加描述。 刚刚拿到这个需求的时候第一个反应是 so easy,上手就做,直接入坑: 第一个坑 用户输入的json不确定格式,不确定层级数量,怎么确定层级关系呢,第一个反应就是写js递归呗,然后页面直接堆栈溢出。 自己摸索半天,让java开发同事40分钟解决了。 写了一个java类递归出来,还帮我判断了每个值的数据类型。(因为不是自己的劳动成果,这里不予公开) 第二个坑 调用自定义类。相关jar包引用不全面,浪费了我2个小时找错的原因。 第三个坑 用户输入了一个不是json格式的内容,自定义类直接报错。后来在文本域编辑结束后就直接判断了输入的是否是json格式,如果不是直接提示并情况文本域 第四个坑 split公式不能用在用户输入完成之后。因为那个时候页面已经初始化后,trtd都固定了,公式不能自动生成。 我的第一个思路是给拆成2个页面,用户先输入基本信息,然后补节点内容的时候在另外一个页面,实现了之后感觉操作比较繁琐,就冒出了第二个想法 把两个页面合并起来。因为split不能用,怎么动态生成单元格呢,我想过写append,但是看了一看控件的js放弃了。后来想起来用网页框,动态给网页框赋值,这样就可以实现了 第五个坑 网页框传递参数,url加参数不能用。post请求一般还不能用json,get请求限制长度。 试了各种方法,最后麻烦前端的同事给解决了,json.stringify 转格式之后用post传递 第六个坑 网页框引用的时候大小范围不好固定,长的话太长,有滚动条,短的话是太短,留白太多。而且给用户一看就知道是2个页面了,不美观,得让用户觉得是一个页面实现的。 我网页框引用的页面每行设置的是8毫米,我看了一下页面对应的是28像素,我根据传递的值计算了一下大概的json对象有多少个,然后乘28,还加上50像素,每次传递参数的时候动态修改一下网页框的高度。这样每次网页框生成的时候页面基本和内容相差不大。 第七个坑 点击提交的时候同时提交两个页面。怎么获取到网页框里面的按钮呢 网页框就是一个iframe 直接js获取iframe里面的控件就行了,window.frames.document.getElementById("btnOk").click(); 在主页面上的填报成功后事件里写调用网页框提交按钮的点击事件就好了,网页框的提交按钮隐藏。
帆软系统平台监控心得
今年3月份开始,因为经常和产品讨论页面,然后发现一些用户的行为,产品并不是很清楚,所以设计页面的时候,设计的并不是符合用户使用 造成做了很多页面,但是页面基本没什么人用。 基于这个原因,我考虑是不是可以通过用户行为来分析用户对系统更加关注哪些内容 基于帆软的日志表 我做了一些数据展示以及分析 一、目前系统上一共有多少个页面 二、这些页面每天都是那些人在访问 三、这些页面每次访问的占用的内存是多大,响应时间多久,平均值是多少,如果超了一定的阈值,然后进行邮件预警 四、页面对应的数据库表是那些,这些数据库表每天什间还没有更新,进行么时候更新,超过一定时邮件预警 五、用户对页面的操作是什么,只是简单的查看,还是比较详细的查看,还是直接为了导出excel做透视 六、一定时间段内页面pv,uv的情况,比如那些页面PV最高,UV最高,那些页面没人访问,然后弄清没人访问的原因是什么,是否可以下线 七、重点用户访问的情况,关注那些页面,那些指标,是否可以作为专项页面 八、目前系统的使用情况,按天的话就是一个时间段内,每天的访问人数,点击次数,按小时的话就是某一天内的每个小时的访问人数和次数,这样更新系统的时候可以选相对较少人使用的时候 目前已经想到并且实现了的就这几点 希望大佬们给与补充 万分感谢
详细分页步骤
这个帖子是因为目前工作中需要做真分页功能,然后人员呢技术参差不齐,导致工期经常延期所以整理一个分页步骤,按照步骤进行,基本上分页功能可以控制到40分钟左右(包含导出页面制作,熟练之后可以控制在20分钟) static/image/hrline/1.gif 第一步: 新增一个模板参数page 默认值给1 第二步: 主数据集后加order BY target_day DESC LIMIT ${P},20 其中target_day随页面进行改动,然后新增一个参数${P},默认值给公式20*($page-1)。这里是按照一页20条记录进行设置的 第三步: 新增一个数据集,根据查询条件查询所有数据,数据集命名为ds1,这个是为了到时候获取到所有的数据行数,然后除20得到总页数 第四步: 点击模板web属性-->分页预览设置,改为为该模板单独设置,然后新增6个自定义按钮 第一个:首页 第二个:上一页 第三个:当前页码 第四个:下一页 第五个:末页 第六个:导出excel 第一个按钮: 主要参数是 page=$page-1 然后下面JS中写 if(page==0) this.setEnable(false); else { var url = "${servletURL}?reportlet=SPORTS%2FGold%2FLDN_Game_20190104_V1.cpt"; var config = { page:"1", sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self'); } 其中sdate和edate自己页面另外的参数,可以随页面进行相应的修改 第二个按钮 主要参数是 page=$page-1 然后下面JS中写 if(page==0) this.setEnable(false); else { var url = "${servletURL}?reportlet=SPORTS%2FDiamonds%2FLDN_Consume_20190104_v1.cpt"; var config = { page:page, sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self'); }其中sdate和edate自己页面另外的参数,可以随页面进行相应的修改,和第一个按钮的区别就是page参数,第一个给传参为1,第二个给传参为page 第三个按钮可以不用管 第四个按钮 主要参数是 page=$page+1 tatol=ROUNDUP(ROWCOUNT("ds1")/20) 然后下面JS中写 if(parseInt(page) > parseInt(total)) { this.setEnable(false); } else { var url = "${servletURL}?reportlet=SPORTS%2FDiamonds%2FLDN_Consume_20190104_v1.cpt"; var config = { page:page, sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self'); }其中sdate和edate自己页面另外的参数,可以随页面进行相应的修改,这个做了一个判断,如果当前页面大于总页数,则按钮不可用 第五个按钮 主要参数是 page=$page+1 tatol=ROUNDUP(ROWCOUNT("ds1")/20) 然后下面JS中写 if(parseInt(page)-1==parseInt(total)) { this.setEnable(false); } else { var url = "${servletURL}?reportlet=SPORTS%2FDiamonds%2FLDN_Consume_20190104_v1.cpt"; var config = { page:total, sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self'); }其中sdate和edate自己页面另外的参数,可以随页面进行相应的修改,这个做了一个判断,如果当前页面大于总页数,则按钮不可用,和第五个按钮不同的是page的传参,第五个传递是page,第六个传递是总页数total 第六个按钮 然后下面JS中写 var url = "${servletURL}?reportlet=SPORTS%2FDiamonds%2FLDN_Consume_20190104_v1_detail.cpt&format=excel&extype=stream"; var config = { sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self'); 这个是做一个导出页面,因为现在按照分页进行查询,每次查询出来只有20条记录 但是导出的话需要导出查到的所有页面 所以需要另做一个导出页,并传参。 主要是在连接后面写 &format=excel&extype=stream 导出页面一般页面名称设置为文件名称后加_detail 所以可以先提前把连接写好。 第五步: 在页面设置中添加一个加载结束后事件 主要参数: curnum=$page rownum=ROUNDUP(ROWCOUNT("ds1")/20) 然后下面JS中写 var pv = "第" + curnum + "页/共" +rownum + "页"; contentPane.toolbar.options.items.setValue(pv); 这步是为了给第三个按钮赋值,显示当前页数 第六步: 按钮写一个点击事件 var sdate = this.options.form.getWidgetByName("sdate").getValue(); var edate = this.options.form.getWidgetByName("edate").getValue(); var url = "${servletURL}?reportlet=SPORTS%2FDiamonds%2FLDN_Consume_20190104_v1.cpt"; var config = { sdate:sdate, edate:edate }; FR.doHyperlinkByPost(url,config,'_self');第七步: 制作导出页面 选择当前页面,然后点击另存为 选在到当前文件夹下,文件名称后加_detail 然后删除导出页面的ds1数据集 点击主数据集 去掉 limit ${P},20 点击web属性,分页设置 去掉按钮 去掉加载结束后事件 去掉模板参数 去掉参数面板上的控件 去掉参数面板的加载结束后事件 然后点击web属性,基本中把标题补全,一般为系统上目录路径名称 static/image/hrline/1.gif 到现在为止,基本上分页功能就可以实现了。为了页面更加好看一些,我这边的一些页面统一样式 页面设置 长度可以根据表格大小进行设置 高度可以设置为150毫米,这样一页20行基本不会出现滚动条 表头颜色e3f3ff 各行换色背景f2f7fd web属性中,按钮背景设置为白色 参数面板设置为白色, 添加初始化后事件 setTimeout(function() { $('.parameter-container-collapseimg-up').hide(); }, 10); 日期设置显示格式为日期格式 编辑于 2019-3-19 21:20
用mysql直接生成日历
BEGIN DECLARE num int DEFAULT -1; CREATE TEMPORARY TABLE under_日历 ( yyyy int, q int, mm int, dd VARCHAR(15), w INT, wd VARCHAR(15) ); lp:LOOP set num = num+1; insert into under_日历 select year(CURDATE()) as y, floor((date_format(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY), INTERVAL num DAY),'%m')+2)/3) as q, date_format(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY), INTERVAL num DAY),'%m') as M, date_format(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY), INTERVAL num DAY),'%Y-%m-%d') as date, date_format(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY), INTERVAL num DAY),'%u') as W, case DAYOFWEEK(date_format(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY), INTERVAL num DAY),'%Y-%m-%d'))-1 when 1 then '星期一' when 2 then '星期二' when 3 then '星期三' when 4 then '星期四' when 5 then '星期五' when 6 then '星期六' when 0 then '星期日' end as DW; if num=dayofyear(concat(YEAR(now()),'-12-31'))-1 THEN LEAVE lp; END if; END LOOP; select * from under_日历; DROP TABLE under_日历; END刚刚看到个帖子是用帆软来做日历的(http://bbs.fanruan.com/thread-122813-1-1.html),然后就想起来自己以前做过类似的,直接用sql生成本年日历 直接放在存储过程里运行年,季度,月,日,周,星期就都出来了 124438 编辑于 2019-1-17 10:57
2018年度总结
今天是12月30号,没多久就要到31号了,这一年过的真快,2018对我来说应该算是人生中重要的一年。2017年10月23号,我举行了婚礼,结束了5年的恋爱长跑。 2018年11月17号,我见到了我生命中另外一个重要的男人,我的儿子 我也成功的晋级为奶爸。 这一年中我从外派公司跳槽到了尚德,刚刚到尚德我其实是拒绝的,因为工资给的低,但是想了想为了离家近下班早,低点也没事(到现在我媳妇都说我当时应该是脑子有泡)。 但是吧,大家也知道,这人生不如意之事,十之八九。从进了尚德到我离职,应该只有第一天是正点下班了。 我到现在都记得面试的时候HR问我能不能加班的时候,我的回答是可以加班,然后HR神秘的一笑,和我说你试试就知道了。 刚刚到公司那叫一个百废待兴,我还挺高兴,这下可以大展拳脚了 部署服务器,整理数据库,嗯?没数据,没关系咱们去要,emmm,都是excel,来没事整理整理入库,emmm计算逻辑不知道,嗯没事慢慢梳理 就在这样的加班中,不知不觉的度过了我媳妇的怀孕期,有时候到家都半夜2点多了,媳妇已经睡了,第二天还得微信上骂我。。。。(现在想想还听不对住我媳妇的) 虽然工作忙,但是也学到了不少,以前工作大部分都是以开发的角度去思考工作。 在尚德这些日子知道了运营是以什么角度去思考这些内容,他们真正需要的是什么。 领导在看报表的时候更关注那些,从数据的收集整理,计算展示到分析报告,每一步环节都有了些许的了解。 这对我以后的报表开发极大的帮助。然后因为生活所迫,嗯离开了这个第一次让我付出这么大努力的公司。 现在的公司一样还是百废待兴,emmm我怎么老是去这样的公司呢···,我媳妇这回直接带着孩子回了娘家··· 说反正我也是要忙工作,没时间陪他们,以后我要是忙工作的时候她就带着孩子回娘家或者去婆婆家住一段时间,等我忙过劲了再回来。。。。 emmm我应该怎么说呢···娶一个这样觉悟高的媳妇挺不赖。。。 {:9_234:} 哦,对今年还和北京的大佬们一起吃了饭,除了星星我不是第一次见以外,其余的大佬都是一次见,以前都在是网上聊,第一次见还削微有点尴尬, 但是后来喝上酒后,及没觉得了。emmm还是网上那样一群逗比 后来帆软这边的北京线下聚会,本来说要去的,但是当天带着孩子去医院了,就赶上,等下次吧,尽量不错过。 最后附上我的大胖小子的照片 124247 124250 有没有要领回去当女婿的啊 {:9_224:}
一个动态列简单的实例
时隔好久 我又上论坛来逛游了··· emmmm 反正发生了好多事,等有时间写个故事,言归正传 领导让做个模板需要可以随便选维度,然后还要月日周 都在一起的 然后就出现了这个模板
尚德教育招聘报表、BI工程师
改招聘需求了(原招聘地址:http://bbs.fanruan.com/thread-114704-1-1.html) 要求会FineReport、Finebi,熟悉数据库 重点 重点 是 活泼开朗的 一定要 活泼开朗的 领导要求{:10_288:}
尚德教育招聘FineReport、FineBI工程师
岗位职责: 1、辅助企业人力资源部进行人员数据分析,负责收集内部数据并分析整理,制作数据报表和分析报告; 2、对公司数据进行有效监督管控,制定数据标准,完善分析方法,优化工作流程; 3、开发相关数据报表模板,为数据分析提供必要的数据支持; 4、结合公司业务运作流程,通过数据挖掘和分析,为集团提供决策支持; 5、各种临时性系统数据的调取、整理和分析; 6、完成上级安排的其他工作。 任职要求: 1、本科以上学历,统计学、数学等相关专业,985/211高等院校优先考虑; 2、2年以上数据分析、数据挖掘相关工作经验,接触过大型数据库经验优先考虑; 3、精通SPSS Modeler,精通SPSS Statistics 4、较强的数据敏感性,开阔的思维和视野,擅于通过数据分析发现业务规律; 5、灵活有想法、具有较强的沟通能力,工作主动性强,能承受较强的工作压力; 6、对人力资源相关信息感兴趣,有互联网行业工作经验者优先 7、有excel,mysql使用经验者优先。 8、有FCBP证书优先 薪资面议 联系方式 QQ:1176846029 手机:15727307066 邮箱:kongbin@sunlands.com 微信:mumubobobiu
寻找北京兼职做FR的工作
地点:北京QQ:1176846029 微信:mumubobobiu 价格面议 编辑于 2018-8-6 16:43
安装mysql8.0.11以及修改root密码、连接navicat for mysql。
下载:官网下载zip包,我下载的是64位的:下载地址:https://dev.mysql.com/downloads/mysql/下载zip的包:下载后解压:(解压在哪个盘都可以的)我放在了这里 D:\mysql-8.0.11-winx64 ,顺便缩短了文件名,所以为 D:\mysql-8.0.11-winx64。配置环境变量:进入 计算机--高级系统设置--高级--环境变量然后新建系统变量变量值改为自己mysql解压的路径变量名:MYSQL_HOME变量值:D:\mysql-8.0.11-winx64path里添加:%MYSQL_HOME%\bin;(分号不要忘记)生成data文件:以管理员身份运行cmd程序--输入cmd 找到cmd.exe 右键以管理员身份运行进入D:\mysql-8.0.11-winx64 下执行命令:mysqld --initialize-insecure --user=mysql 在D:\mysql-8.0.11-winx64目录下生成data目录启动服务:执行命令:net start mysql 启动mysql服务登录mysql:登录mysql:(因为之前没设置密码,所以密码为空,不用输入密码,直接回车即可)D:\mysql-8.0.11-winx64\bin>mysql -u root -p Enter password: 修改root用户密码:默认root密码为空的话 ,下面使用navicat就无法连接,所以我们需要修改root的密码。ALTER user 'root'@'localhost' IDENTIFIED BY '123456' 至此,安装mysql和修改root密码告一段落。开始navicat for mysql篇。在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('');但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。so,我们这里需要再次修改一次root密码。先登录进入mysql环境:执行下面三个命令。(记得带上分号)use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVILEGES;OK.现在再去重连。perfect!
手风琴和网页框碰撞的火花
98691 啥也不说了 先上图 基本上都是css样式来实现的 还是在frm 中 js 上 只是在body的初始化事件中 加了一个div,div里面加了一个ul 然后根据数据集中要展示的数据 循环添加li 98686 括起来的是用公式取的数据集,把数据集当成数组。然后用在js里面 setTimeout( function(){ $("div").append("") var oUl=document.getElementById('ac-container'); var str=''; for (var i = 0; i
改变视图树的样式
98470 视图树 的样式改变 我只是试了2层 和3层的 在多层的 我目前还没有试
点击树 显示不同的数据
98388 数据没有内置 就是一些指标 数据库的设计是这样的 FRM 上面还有树的删除和添加功能 编辑于 2018-3-22 10:51 编辑于 2018-3-27 15:52
一些小事例的模板整理36个
98023 都是9.0的 年前做的一些东西 应该现在有一些可以优化的地方 到时候 大家看看 哪里可以优化 就优化一下 好多都是番薯在问答的地方 问到的解决方案 编辑于 2018-3-20 09:55
帆软外包开发,公司非个人,可驻场可出差
北京志行正科技技术有限公司 http://www.zxztech.com/ 北京志行正科技有限公司成立于2010年,是北京市科学技术委员会认定的“高新技术企业”,公司总部位于北京,在成都、深圳分别设有分支机构。公司致力于助跑传统企业,为传统企业提供一站式信息化服务,帮助传统企业轻松实现“互联网+”。 公司业务范围涵盖网站建设、软件开发、移动应用开发、与人才派遣等服务,专注于金融、通讯、电力、煤炭、科研教育和政府等传统行业,并具有深厚积累和丰富经验。公司核心团队成员均来自IBM、新浪、中科院华建集团等,且拥有丰富的开发工作经验,并成功实施了一系列有较大影响的重大工程项目,我们的团队拥有共同的理想和理念,不断提升服务质量是我们永远追求的目标。 过去,志行正在"以人为本,质量至上、服务社会"的服务理念指导下,凭借丰富的实战经验和专业的技术团队,坚持以成就客户为己任,遵循"高效、优质"的服务目标,以最优的价格、最优的质量为国内传统企业提供了信息化服务。今天,志行正充分把握时代的机遇与挑战,借助大数据、云计算等新兴技术手段,推动传统企业转型升级,助力其实现“互联网+”;未来,志行正将不懈努力,以创新思维和领先技术,为客户创造可持续的价值。 公司现在成立帆软外包团队。 主要业务: 围绕以FR应用为核心的整套报表系统的开发,移动办公定制开发、网站定制开发、软件外包服务等等。 公司核心人员具有多年软件行业从业经验,在多个项目中使用了FineReport、FineBI等帆软产品,有丰富的行业工作经验以及FR的应用经验。 联系人:孔彬 QQ:1176846029 电话:15727307066
北京外包公司招聘
96333 联系方式:QQ1176846029 编辑于 2018-3-2 15:55
鼠标悬浮 图片放大
前段日子看到一位番薯在论坛提问,说一个表格中有图片,能不能做到鼠标悬浮上去然后图片放大。 我给他回答是写js来实现,但是一直没有理我 o(╥﹏╥)o 刚刚做了一个例子 93341 应该可以满足这个番薯的需求。 static/image/hrline/1.gif 步骤1: 准备一个表格,然后选一列放图片,比如我这里C列放了图片,然后D列放要放大的图片的路径,相对路径就行。 93342 步骤2: 在web属性中选择填报页面,我比较喜欢在填报页面做所以我就选填报,不爽咬我啊~~~ 然后添加加载结束事件 $(".x-table td").mouseover(function(e){ var col=Number($(this).attr("col"))+1; //获取鼠标当前所在单元格的col var row=$(this).attr("row"); //获取鼠标当前所在单元格的row var img=contentPane.curLGP.getCellValue(col,row); //获取到隐藏的图片地址 $("body").append(""); //弹出一个div里面放着图片 $("#preview")//修改这个div的样式,让他居中 .css("-ms-transform","translate(-50%,-50%)") .css("-moz-transform","translate(-50%,-50%)") .css("-o-transform","translate(-50%,-50%)") .css("transform","translate(-50%,-50%)") .css("left","50%") .css("top","50%") .css("z-index","9999999") .css("position","absolute") }); //鼠标离开这个div移除 $(".x-table td").mouseout(function(e){ $("#preview").remove(); }); 然后点击确定。 {:fange11gif:} 搞定 溜了溜了溜了。。。。。
帆软,2018加油
本来打算2017年写的这个番薯故事,硬是让我拖到了2018年。2015年中旬,当时公司有项目需要做采集系统和展示系统,公司领导指定要用帆软来做。 我用了一个星期来学习帆软,这是我和帆软的第一次见面。 项目最后页面上80%的功能都是由我完成的,看着系统完美上线,心里特别自豪。 2016年,公司陆陆续续的要做一些模板,用在各个系统上面。(全部都是有我开发)这样平平淡淡的过完了2016 2017年,应该是我人生中最重要的一年,因为我在这一年结婚了。 可是在工作上,这一年我依然是做做模板,这样的平淡无奇。 我觉得这样下去不行,我得学习新的东西,在2017年12月中旬,我又一次打开了帆软论坛,然后一发不可收拾的迷上论坛。 天天在帆软报表交流群里尬聊,讨论报表,讨论技术。不会了去就去百度,发现了比较有意思的需求,去实现以下,然后发到论坛上让大家看看。 好像整个人都换发了新的活力。2018年了,我希望呢,我和帆软在这条道路上携手并进,越走越远。 (毕竟升职加薪全靠它了) {:11_362:} 发现你们都发照片 我也来个 91269 编辑于 2018-1-8 14:11
js实现折叠行
今天上午有个番薯提出了一个需求,要根据按钮来控制行的显示或者隐藏,实现折叠的效果 其实在帮助文档中有折叠树这个文档,大家可以去搜索一下。 但是番薯说要用js来实现,琢磨了一下,代码如下: static/image/hrline/1.gif 91042 可以看到我在单元格A1和B1 放了一些数据,就是直接用了系统自带的表来做例子,方便大家看 SELECT * FROM S产品 where 产品id<5然后在C1放了一个按钮,D1这里我是放一个标示值,用来表示我现在应该是隐藏还是显示,默认为1. C1按钮我设置了一个点击事件: var cr = FR.cellStr2ColumnRow(this.options.location).row;//获取到当前控件的行号 var a=contentPane.getCellValue(3,cr);//获取标识单元格的值,默认给了1 //为了更新标识,点击的时候变为0 if(a==1){ contentPane.setCellValue(3,cr, 0); } else{ contentPane.setCellValue(3,cr, 1); } var b=contentPane.getCellValue(3,cr); var c1=cr+1; var c2=cr+2; var c3=cr+3; var c4=cr+4; if(b==0){ $("#r-"+c1+"-0").show(); $("#r-"+c2+"-0").show(); $("#r-"+c3+"-0").show(); $("#r-"+c4+"-0").show(); } else { $("#r-"+c1+"-0").hide(); $("#r-"+c2+"-0").hide(); $("#r-"+c3+"-0").hide(); $("#r-"+c4+"-0").hide(); } 在下面我放了4行展示数据,观察是否折叠,全选然后做了一个条件属性 91047 这样就可以在页面一开始展示的时候 行是隐藏的。 91048 91049 编辑于 2018-1-5 11:30
用js实现排序,不用刷新页面
91210 前段日期,客户提了一个比较个性的要求,就是要填报的时候可以对表格进行排序。根据帮助文档,用了扩展后排序这个功能,发现了每次点击的时候都会刷新一下页面,这样导致我刚刚填报的数据被刷新没了。 然后有好几个番薯来问我解决了没,有相同的需求。琢磨了一下午,终于解决了这个问题下面是解决方案。 static/image/hrline/1.gif 我用的是填报页面,所以就在填报页面上添加了一个页面加载结束后的事件 点击模版,点击模版web属性,填报页面设置,然后选择为该模版单独设置,然后添加页面加载结束事件。 function sortTable(table, idx) { var otable = document.getElementById(table), otody = otable.tBodies, otr = otody.rows, tarr = ; for (var i = 1; i < otr.length; i++) { tarr = otr; }; if (otody.sortCol == idx) { tarr.reverse(); } else { tarr.sort(function (tr1, tr2) { var value1 = tr1.cells.innerHTML; var value2 = tr2.cells.innerHTML; if (!isNaN(value1) && !isNaN(value2)) { return value1 - value2; } else { return value1.localeCompare(value2); } }) } var fragment = document.createDocumentFragment(); for (var i = 0; i < tarr.length; i++) { fragment.appendChild(tarr); }; otody.appendChild(fragment); otody.sortCol = idx; } $("#r-0-0 td").bind("click",function(){ var a=$(this).attr("col"); sortTable('0',a); }); 这样就可以实现在填报的中点击表头排序功能了。 注意:$("#r-0-0 td") 我这里是获取了第一个tr下面的所有td 因为我这个页面没有别的东西 就是一个表格,如果你的页面有别的展示,需要进行对应的修改。 可以在页面上用F12 来获取到对应的元素 编辑于 2018-1-4 15:33 编辑于 2018-1-4 15:59 编辑于 2018-1-8 10:18
12下一页
个人成就
内容被浏览444,179
加入社区8年240天
返回顶部