工作总结

来到东之林后,以前一直希望加入一个专业的开发团队,现在终于实现了...

首先接触的是工作流,公司需要一个基于web的图形化的工作流设计器,这个肯定要用js+vml了,由于本人js水平实在有限,以前也没有做过类似的项目,为了不影响公司的项目进度,这个任务就交出去了。

第二个任务是excel文件的导入,这是个基本的功能,以前做过很多次了,打开公司的项目,感觉公司项目的结构还不是很清晰,没有明显的分层,所以我自己建了一个逻辑类,算是业务逻辑层吧,linq算是数据模型,数据操作层就忽略不计了,现在有asp.net mvc,希望公司以后能用上,结构清晰利于项目的可维护性和可扩展性。

以前在写excel文件导入的时候,完成导入的功能就行了,现在我需要从用户的角度考虑,首先要验证excel每列的数据,然后考虑到导入过程中难免会产生错误,干脆把错误作为一个常态,增加一个错误列表,把错误信息也放进去,而且显示出来,这样用户导入后,知道哪些数据导入了,哪些没有导入。

在进行数据验证的时候,每个字段都要一一验证,这样用代码来写感觉太冗长了,以前见过一个表有上百的字段的,难道要写上百段验证代码吗,用xml吧,这样维护起来也灵活一些。。。

这是xml

<?xml version="1.0" encoding="utf-8" ?>
<table>
  <fields>
    <field isnull="0" fieldType="char">行政区名称</field>
    <field isnull="0" fieldType="char">部件小类</field>
    <field isnull="0" fieldType="char">部件名称</field>
    <field isnull="1" fieldType="date">部件建立时间</field>
    <field isnull="0" fieldType="char">主管部门名称</field>
    <field isnull="1" fieldType="char">权属单位名称</field>
    <field isnull="1" fieldType="char">养护单位名称</field>
    <field isnull="1" fieldType="char">部件状态</field>
    <field isnull="1" fieldType="char">普查数据来源</field>
    <field isnull="1" fieldType="char">备注</field>   
  </fields>
</table>

首先验证模板

然后验证数据


这样代码看起来轻盈多了,维护起来也方便一些…,当然这个功能还能继续扩展,做的更加灵活…,由此觉得公司应该有通用验证类,c#版和js版的,这个应该是基本的…

后面的任务就都是一些基本的增删改查了,用到了公司自己的linq api 感觉很好,很大程度提高了生产效率,以前用ado.net存储过程,要搞一大堆参数,很耗时间。当然存储过程还是有用的,基本的增删改查用linq足够了,如果涉及后台数据复杂计算和统计那还是要用存储过程效率高一些。值得提及的是ajax,用了ajaxPro,感觉很方便,这个是在家里面做的,刚开始不起作用,代码里面该写的都写了,后来要在项目里面引用ajaxPro才行。里面有个小问题,在垃圾清运费用里面,用户输入重量的时候,应收金额文本框自动根据收费标准和用户输入的重量计算并显示相应的值,这个起先是没有问题的,可是后来在测试的时候,如果输入重量时,用户选择了文本自动提示的历史数据,就不触发文本框的相关事件了,这样会造成应收金额计算错误,必须把这个提示屏蔽掉:

document.getElementById("Wage").setAttribute('autocomplete','off');

还有一点就是,用户确认提示框,在某个功能里面需要在后台捕获用户confirm提示框的返回值,这里需要在页面添加一个linkbutton,然后添加代码:

String scriptString = "<script>if (confirm('该社区该月收入已存在,是否更新?')) __doPostBack('LinkButton1','')</script>";

ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", scriptString);

这个时候,confirm方法返回true就会触发linkbutton的后台事件,将相应的代码写在linkbutton的click事件里面就ok了,这个里面不能把linkbutton的visible设为false,否则将失效。

还有一个任务是数据整理,这个主要是excel的格式比较复杂,不能直接返回DataTable,要用DataReader逐条读取,然后是整理,整理过程比较复杂,写了四页sql,很遗憾这些sql被我无意识删掉了。

最后在测试后做了异常处理,先是要在每个页面加,后来就干脆写在BasePage里面吧:

protected override void OnError(EventArgs e)

{

      string returnPagePath = GetRootPath("Error.aspx");

      Exception ex = Server.GetLastError();

      Server.Transfer(returnPagePath + "?error=" + ex.Message);            

}

只要继承BasePage就能处理未截获的异常了。这样更加人性化一些,当然还有一种方法是在webconfig里面进行配置,更加简单。

谈一下分页吧,项目里面感觉还是假分页,使用的是分页控件,需要把数据先全部load,数据量小可以,数据量大的话会影响运行效率,以前真分页是用存储过程实现的,现在用linq,linq也有分页方法,以后数据量大的页面肯定还是要用真分页的。

虽然都是一些很肤浅的技术,但还是尽量做好吧,希望以后和大家多些交流和沟通…大家一起与时俱进…

你可能感兴趣的:(工作总结)