距离页面哥离职也有两个月了,这两个月我被人事部的一个同事几乎每天骚扰,虽说是个美女,但是每天这么骚扰也显得咱技术太差了点,本着帮人同时也锻炼一下自己的原则,将这个查询数据的web页面重新改写了一遍,顺带着学习了一下一直想要学习的一些东西,比如html5、bootstrap、REST、json,另外还有局域网访问、Access数据库读取、Excel文件下载等技术点。
首先当然是查看原项目在原项目上修改,发现页面哥就是把东西往他们以前做项目的一个模板里面生套,从目录结构到没用的垃圾文件简直一塌糊涂,想修改根本没办法着手,而且那个页面界面太古老,不知道是哪年网上的模板,于是只能自己重新造轮子了。
首先将两个页面合并为一个页面,分为表单区和数据展示区,由于是.net开发,表单中按钮都使用了runat="server",但是没有用button,而是使用比较流行的a标签;日期选择框开始使用了html中input的date类型,但是发现只有chrome支持,于是换成bootstrap的datepicker插件,而且也给按钮换了样式并添加图标,下方的数据展示grid也适用bootstrap的样式,但是只用了悬停效果。
另外本来还有一个电话记录数据需要人事美女每天从电话系统中导出再在这里导入的,本着不能让美女(主要是用户)受累的原则,我想应该做成系统自动去获取数据,查看了电话记录系统,数据库是使用Access的,而且该系统没有开放api,统计功能点了没反应,备份功能形同虚设,而且系统使用时独占文件,无法读取该数据库,于是只好放大招,将两个电话系统的mdb文件拷贝到本地,再执行读取操作。另外sqlserver数据库统计工作是放在自动作业中定时操作,我将其更改为获取数据结束后执行统计,这样衔接更有效,而且前面的任务出错自然就不会执行统计操作了。
sqlserver中的统计代码也有修改,这就不讲了,轻车熟路。
再回到查询数据页面,有页面显示查询结果和导出到excel文件功能,获取数据直接读数据库太easy了,于是使用了目前比较流行的做法——前后端分离,后端使用ashx文件获取数据序列化后返回json,前端得到json后再反序列化得到datatable,使用.net自带的功能已经比较方便了,但是我还是使用了效率更高的json.net库,序列化与反序列化都只要两行代码就可以了,而且速度比自带的库要快的多。
最后导出到excel文件功能,网上一大堆例子,但是我还是遇到了问题,在chrome下文件名总是不对,而在其他浏览器下中文也都是乱码,后来发现是在文件名的地方使用了url.Encoding的方法,去掉直接使用字符串拼接的方式,一切都解决。附个图吧,其中导入文件功能已经不需要了:
附加一条,就是发布时使用了web deploy方式,这是我第一次使用,公司其他人私人有没有使用过我不清楚,但是公司的项目肯定是没有使用这种方式的,配置这个用了我半天时间,开始是使用web平台安装程序在线安装的deploy,死活连不成功,各种403、404错误,网上到处都找不到答案,今天单独下载了一个安装包,卸载重启重安装,神奇的好了,以后可以在内部推广一下,也可以减轻我的工作量。
总结一下:
1 stackoverflow是个好网站
2 程序中记录日志调试是个好办法,决定以后所有的项目都加记日志类
3 持续改进很重要,保持思考更重要
4 bootstrap算是入了门
5 能计算机做的尽量不要让人操作,降低出错几率而且提升效率
改进点:
1 图标在按钮中都偏上,之前的测试页面没有出现过
2 日期选择插件还不是中文,修改bootstrap.js文件后使用中文出现乱码
3 下方的数据展示grid还是.net控件,需要在一个runat="server"的form中使用,希望可以改为通用的grid
4 既然自动化,可以考虑不设界面,直接发邮件到指定人邮箱即可
5 设计上有待加强
