




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态二维表格设计及常见问题解析专业计算机科学与技术部门信息中心项目管理部入职时间2009年10月21日目录摘要3第一章动态二维表格设计缘由411客户需求4111实现预算编制的流程4112预算编写的特点6第二章动态二维表格的设计与实现721动态表格实现722制作带文本框的模板列723制作带日期控件的模板列924制作带文本框和日期控件的模板列的区别与注意事项10第三章常见问题解析1231弹出窗口问题及解决办法1232VSS连接问题及解决办法1433DATALIST控件和GRIDVIEW控件中编号设置的区别1434提高性能的注意事项14第四章总结及建议1941总结1942建议19摘要随着网络通讯技术及信息技术的快速发展,将现代通讯网络技术和计算机技术应用到企业生产和管理中,已成为现代化企业提高生产管理效率和经济效益的重要手段。在企业的生产和管理中,使用表格去记录管理比较直观形象,通俗易懂。为了实现表格的通用性,我们还可以利用动态的二维表格。而在WEB开发中实现动态的二维表格是比较困难的。在本文中,将结合我对红松电场财务管理系统的开发,具体讲述了动态二维表格的设计与实现以及在开发中的一些常见问题及解决办法。第一章动态二维表格设计缘由我进入天源公司后,主要参与的是红松电场财务系统的编码,在了解需求的过程中,发现客户的需求是根据模板创建预算,所选模板不同,预算明细表的格式和内容都不同,为了实现这一功能,我们决定采用设计动态二维表格的方法来实现。11客户需求目前红松电场财务部有一套财务软件可以实现核算功能,而本系统的财务模块需要实现预算功能,主要包括预算编制、预算控制、预算评价;预算管理等。现以预算编制为例简单介绍客户需求。111实现预算编制的流程项目定义内容定义模板创建编制预算说明1项目定义项目定义是根据预算需要的项目定义,如果在预算所需的项目已经创建好时,不需要再进行创建项目。项目定义页面如图11所示图112内容定义内容定义是对项目的细化,即每一项目所需要预算的项。比如我们创建一项目为“办公用品”,该项目需要预算的有“单价”和“数量”,那么我们就把“单价”和“数量”作为内容项。内容项可以是数值型、日期型和选择型。内容定义页面如图12所示以选择型为例,选择的具体信息可以自己定义。图123模板创建模板创建是根据已有的项目信息和内容信息进行创建,如图13所示。图13在该页面中,选择该模板适用的部门、所需的项目和内容项后提交即可创建模板。4编制预算编制预算是根据已有的模板进行创建,所选预算模板不同,预算明细表的的内容不同,而预算模板是根据预算部门的变化而变化的。编制预算页面如图14所示。预算表格式如下图14112预算编写的特点1通过灵活的制定预算模板,进而对预算明细表也可以灵活定义2在预算编制时,预算可以有两种状态,分别为1预算保存和2预算提交,当预算处于预算提交状态时,有权限的人员才可以进行审核、调整、执行、评价等操作,而且在预算页面不可以再做修改,只能通过有权限的人在预算调整页面进行调整修改。第二章动态二维表格的设计与实现针对第一章的客户需求,并且为了实现预算模板的通用性,我们在编制预算的时候采取了动态表格的使用,即自定义表格的行和列根据项目信息确定行,根据内容信息确定列,并且列可以有数值型、选择型和日期型三种类型,在数值型的时候还可以实现简单的计算。在开发的过程中,发现要在WEB应用程序中实现这些功能非常困难,再加上我们使用日期型控件是由我们的技术人员自定义的控件,引用的时候也比较复杂。经过一段时间的努力以及其他同事的帮助,这些问题都逐步解决。21动态表格实现在实现编制预算功能时,由于客户的需求是所选模板不同,预算明细表的格式也不同,即预算明细表中的项目和内容信息是随模板变化而变化的。实现这一功能时,就需要制作动态表格。使用ASPNET中的GRIDVIEW控件,并且给GRIDVIEW控件添加自定义的模板TEMPLATEFIELD列。在自定义模板列时,可以根据实际情况制作,如果模板列是需要带文本框的,可以利用TEXTFIELD控件;如果是需要带复选框的,可以利用CHECKBOX控件等等。现以要制作带文本框文本框为框架自带控件的模板列和制作日期控件日期控件为技术人员自定义控件的模板列为例进行分析。22制作带文本框的模板列代码如下PUBLICCLASSGRIDVIEWTEXTTEMPLATESYSTEMWEBUIITEMPLATEPRIVATEDATACONTROLROWTYPETEMPLATETYPEPRIVATESTRINGCOLUMNNAMEPRIVATESTRINGCIDPUBLICGRIDVIEWTEXTTEMPLATEDATACONTROLROWTYPETYPE,STRINGCOLNAME,STRINGCONTROLIDTEMPLATETYPETYPECOLUMNNAMECOLNAMECIDCONTROLIDPUBLICVOIDINSTANTIATEINSYSTEMWEBUICONTROLCONTAINERSWITCHTEMPLATETYPECASEDATACONTROLROWTYPEHEADERLITERALMYHEADLITERALNEWLITERALMYHEADLITERALIDCIDMYHEADLITERALTEXT“COLUMNNAME“CONTAINERCONTROLSADDMYHEADLITERALBREAKCASEDATACONTROLROWTYPEDATAROWTEXTBOXMYTEXTBOXNEWTEXTBOXMYTEXTBOXIDCIDMYTEXTBOXDATABINDINGNEWEVENTHANDLERTHISTEXTBOXDATABINDINGCONTAINERCONTROLSADDMYTEXTBOXBREAKDEFAULTBREAKPRIVATEVOIDTEXTBOXDATABINDINGOBJECTSENDER,EVENTARGSETEXTBOXMYTEXTBOXTEXTBOXSENDERGRIDVIEWROWROWGRIDVIEWROWMYTEXTBOXNAMINGCONTAINERMYTEXTBOXTEXTSYSTEMWEBUIDATABINDEREVALROWDATAITEM,CIDTOSTRING23制作带日期控件的模板列代码如下PUBLICCLASSGRIDVIEWCALENDARTEMPLATESYSTEMWEBUIITEMPLATEPRIVATEDATACONTROLROWTYPETEMPLATETYPEPRIVATESTRINGCOLUMNNAMEPRIVATESTRINGCIDPRIVATESTRINGHEADIDPRIVATESTRINGHEADNMPUBLICGRIDVIEWCALENDARTEMPLATEDATACONTROLROWTYPETYPE,STRINGCOLNAME,STRINGCONTROLIDTEMPLATETYPETYPECOLUMNNAMECOLNAMECIDCONTROLIDPUBLICVOIDINSTANTIATEINSYSTEMWEBUICONTROLCONTAINER/CREATETHECONTENTFORTHEDIFFERENTROWTYPESSWITCHTEMPLATETYPECASEDATACONTROLROWTYPEHEADER/CREATETHECONTROLSANDSETIDPROPERTIESTOPUTINTHEHEADERLITERALMYHEADLITERALNEWLITERALMYHEADLITERALIDCIDMYHEADLITERALTEXT“COLUMNNAME“CONTAINERCONTROLSADDMYHEADLITERALBREAKCASEDATACONTROLROWTYPEDATAROW/CREATETHECONTROLSANDSETIDPROPERTIESTOPUTINADATAROWSYSTEMWEBUIPAGEPAGESYSTEMWEBUIPAGESYSTEMWEBHTTPCONTEXTCURRENTHANDLERCONTROLTMPCONTROLPAGELOADCONTROL“PARTPARTDEFCALENDARASCX“TMPCONTROLIDCIDHFKCPARTIPARTDEFCALENDARTMPCONTROLDATABINDINGNEWEVENTHANDLERTHISCALENDARDATABINDINGCONTAINERCONTROLSADDTMPCONTROLBREAKDEFAULT/INSERTCODETOHANDLEUNEXPECTEDVALUESBREAKPRIVATEVOIDCALENDARDATABINDINGOBJECTSENDER,EVENTARGSECONTROLMYCALENDARCONTROLSENDERGRIDVIEWROWROWGRIDVIEWROWMYCALENDARNAMINGCONTAINERHFKCPARTIPARTDEFCALENDARMYCALENDARTEXTSYSTEMDATADATAROWVIEWROWDATAITEMROW4TOSTRING24制作带文本框和日期控件的模板列的区别与注意事项区别制作带文本框的模板列时,可以直接使用TEXTBOX类;而制作日期控件时,需要先通过CONTROLTMPCONTROLPAGELOADCONTROL“PARTPARTDEFCALENDARASCX“导入该自定义控件。注意给GRIDVIEW控件制作模板列时必须进行绑定,如代码中用红色标注的一段代码。否则无法将值赋值给GRIDVIEW中相应的控件。第三章常见问题解析在开发的过程中,除了动态表格问题,还遇到了其它各种各样的问题,包括VSS的连接以及性能上的一些问题。尤其是关于性能上的问题,因为在开发WEB项目的软件时,软件性能是衡量软件产品的一个非常重要的因素,而软件的性能很大程度上取决于代码的结构。由于我以前一直做JAVA方向的开发工作,对ASPNET开发过程中性能问题不是很熟悉,所以一开始写代码的时候在这方面不是很注意,但是通过这段时间同事们的提醒和帮助,在提高性能这方面也有了一定的积累。31弹出窗口问题及解决办法页面GRIDVIEW中有一个LINKBUTTON(LBTBUDGETNAME),现在需要在点击该BUTTON的时候弹出一个新的页面。如果采用该BUTTON的CLICK事件,如下代码所示PROTECTEDVOIDLBTBUDGETNAME_CLICKOBJECTSENDER,EVENTARGSELINKBUTTONSENDERATTRIBUTES“ONCLICK“WINDOWSHOWMODALDIALOGFRMBUDGETPOPUPASPX,预算内容,HELPNORESIZABLEYESSTATUSFALSEDIALOGWIDTH550PXDIALOGHEIGHT350PX“如果采用如上代码,会发生错误第一次点击该按钮时不弹出相应的页面,在第二次点击的时候才弹出。原因控件执行顺序是先客户端后服务器端。所以在点击按钮的时候,它会先执行客户端代码,但是执行的时候,客户端没有让它弹出页面的代码;然后接着它会执行服务段代码,这时,才给它注册上客户端代码。这样一来,第一次执行时就不会弹出页面。而在以后再次点击时,因为它在第一次的时候已经给客户端注册上代码,所以执行的时候就可以弹出相关页面了。解决办法一在GRIDVIEW绑定的时候就给它注册客户端代码。如下所示PROTECTEDVOIDGRIDVIEW1_ROWDATABOUNDOBJECTSENDER,GRIDVIEWROWEVENTARGSEIFEROWROWTYPEDATACONTROLROWTYPEDATAROWGRIDVIEWROWGVREROWINTINDEXGVRROWINDEXINTBUDGETIDCONVERTTOINT16LABELGVRCELLS0FINDCONTROL“LBID“TEXTLINKBUTTONOBJHLEROWFINDCONTROL“LBTBUDGETNAME“ASLINKBUTTONOBJHLATTRIBUTES“ONCLICK“WINDOWSHOWMODALDIALOGFRMBUDGETPOPUPASPXBUDGETID“BUDGETID“,预算内容,HELPNORESIZABLEYESSTATUSFALSEDIALOGWIDTH550PXDIALOGHEIGHT350PX“这样因为在GRIDVIEW绑定的时候已经注册上客户端代码,所以在点击GRIDVIEW中的LINKBUTTON按钮时,它会弹出相关页面。解决办法(二)PROTECTEDVOIDLBTBUDGETNAME_CLICKOBJECTSENDER,EVENTARGSETHISPAGEREGISTERSTARTUPSCRIPT“,“WINDOWSHOWMODALDIALOGFRMEXECBUDGETASPXID49,预算内容,HELPNORESIZABLEYESSTATUSFALSEDIALOGWIDTH550PXDIALOGHEIGHT350PX“因为点击按钮的时候,页面会刷新,在页面刷新的同时,给它注册脚本事件。这样也可以实现。32VSS连接问题及解决办法问题如果在连接VSS时,报“不能连接VISUALSOURCESAFEINTERNETWEBSERVICE”错误时。解决方法需要在工具选项源代码管理中,去掉INTERNET选项。33DATALIST控件和GRIDVIEW控件中编号设置的区别DATALIST用以下代码FONTBOLD“TRUE“GRIDVIEW也类似,稍微有点不同,用的是DATAITEMINDEX34提高性能的注意事项1、使用值类型的TOSTRING方法在连接字符串时,经常使用“号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。使用值类型的TOSTRING方法可以避免装箱操作,从而提高应用程序性能。INTNUM1STRINGSTR“GO“NUMTOSTRING2、运用STRINGBUILDER类STRING类对象是不可改变的,对于STRING对象的重新赋值在本质上是重新创建了一个STRING对象并将新值赋予该对象,其方法TOSTRING对性能的提高并非很显著。在处理字符串时,最好使用STRINGBUILDER类,其NET命名空间是SYSTEMTEXT。该类并非创建新的对象,而是通过APPEND,REMOVE,INSERT等方法直接对字符串进行操作,通过TOSTRING方法返回操作结果。其定义及操作语句如下所示INTNUMSYSTEMTEXTSTRINGBUILDERSTRNEWSYSTEMTEXTSTRINGBUILDER/创建字符串STRAPPENDNUMTOSTRING/添加数值NUMRESPONSEWRITESTRTOSTRING/显示操作结果3、避免使用ARRAYLIST。因为任何对象添加到ARRAYLIST都要封箱为SYSTEMOBJECT类型,从ARRAYLIST取出数据时,要拆箱回实际的类型。建议使用自定义的集合类型代替ARRAYLIST。ASPNET20提供了一个新的类型,叫泛型,这是一个强类型,使用泛型集合就可以避免了封箱和拆箱的发生,提高了性能。而且使用泛型比较灵活,可以实现多维数组,比如在该系统中创建的BUDGETVALUE类就是泛型类,使用灵活方便。4、不要用TOUPPER,TOLOWER转换字符串进行比较,用STRINGCOMPARE代替,它可以忽略大小写进行比较例CONSTSTRINGC_VALUE“COMPARE“IFSTRINGCOMPARESVARIABLE,C_VALUE,TRUE0CONSOLEWRITE“相同“也可以用STRSTRINGEMPTY或者STRLENGTH0判断是否为空。注意判断输入数据的长度,可防止SQL注入式攻击将STRING对象的LENGTH属性与0比较是最快的方法,避免不必要的调用TOUPPER或TOLOWER方法。5、类型转化INT32TRYPARSE优于INT32PARSE优于CONVERTTOINT32。建议NET11下用INT32PARSE;NET20用INT32TRYPARSE。因为CONVERTTOINT32会把最终的解析工作代理给INT32PARSE;INT32PARSE会把最终的解析工作代理给NUMBERPARSEINT32;INT32TRYPARSE会把最终的解析工作代理给NUMBERTRYPARSEINT32。6、避免在循环体里声明变量,应该在循环体外声明变量,在循环体里初始化。C程序开发要遵循的一个基本原则就是避免不必要的对象创建/避免FORINTI0ICATCHEXCEPTIONEXC/推荐TRYCATCHSYSTEMNULLREFERENCEEXCEPTIONEXCCATCHSYSTEMARGUMENTOUTOFRANGEEXCEPTIONEXCCATCHSYSTEMINVALIDCASTEXCEPTIONEXC8、使用TRYCATCHFINALLY时,要在FINALLY里释放占用的资源如连接,文件流等不然在CATCH到错误后占用的资源不能释放。TRYCATCHFINALLYCONNTIONCLOSE9、不要用EXCEPTION控制程序流程有些程序员可能会使用异常来实现一些流程控制。例如TRYRESULT100/NUMCATCHEXCEPTIONERESULT0但实际上,EXCEPTION是非常消耗系统性能的。除非必要,不应当使用异常控制来实现程序流程。上面的代码应当写为IFNUM0RESULT100/NUMELSERESULT0第四章总结及建议41总结在信息中心项目管理部工作的这段时间里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国去红敏滴眼液市场调查研究报告
- 2025-2030艺术工具行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030肥皂产业政府战略管理与区域发展战略研究报告
- 2025-2030网站优化行业市场深度分析及发展策略研究报告
- 2025年花管机项目可行性研究报告
- 2025-2030童车行业市场发展分析及竞争格局与投资战略研究报告
- 2025-2030碳氢化合物行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030直饮水设备企业创业板IPO上市工作咨询指导报告
- 2025-2030男性洗面奶产业市场深度调研及发展趋势与投资战略研究报告
- 2025-2030电池背包喷雾器行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 篮球赛计分表模板
- GA/T 2034-2023法庭科学疑似毒品中咖啡因检验气相色谱和气相色谱-质谱法
- 古典诗歌表达技巧之“列锦”(公开课)课件
- 网络安全防护讲座课件
- 丁类厂房消防设计规范
- 英语PET考试固定搭配
- 立裁连衣裙方法
- 甘肃省兰州市成考专升本2023年英语真题及答案
- 人才培养模式与课程体系改革总结报告
- 《非暴力沟通》市公开课一等奖课件
- 07J902-3 医疗建筑(卫生间、淋浴间、洗池)
评论
0/150
提交评论