




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在很多web应用中,我们会遇到很多需要动态插入多行纪录的地方。比如,在人才网站上,我们填写简历的时候,我们要填写我们的项目经验,我们可以根据自己的实际情况动态的添加条数,这种不是以单独页面的形式添加,这种动态添加是在同一个页面下动态添加,最后再一起提交到服务器保存到数据库中。 本文,我将以一个类似的例子来做一个前台用Javascript动态添加数据项,后台保存到数据库的例子。 浏览器:IE.6.0 后台:ASP (VBScript) 前台:HTML + JavaScriptHTML代码:Name:Sex:Projectname:Befredescription:Begindate:Finisheddate:DeleteJS代码:/*Thisfunctionisusetoaddonerowdynamicly*tabObj:Targettable*colNum:Thenumberofcolumnsthatofarowintable*sorPos:Thesourceofthenewrow.*targPos:Thepositionwherethenewrowwillbeadded.*/functionaddRow(tabObj,colNum,sorPos,targPos)varnTR=tabObj.insertRow(tabObj.rows.length-targPos);/Insertanewrowintoappointedtableonthe/appointedposition.varTRs=tabObj.getElementsByTagName(TR);/GetTRscollectionfromtheappointedtablevarsorTR=TRssorPos;/PositionedthesorTRvarTDs=sorTR.getElementsByTagName(TD);/GetTDscollectionfromtheappointedrowif(colNum=0|colNum=undefined|colNum=isNaN)colNum=tabObj.rows0.cells.length;varntd=newArray();/CreateanewTDsarrayfor(vari=0;icolNum;i+)/TraverltheTDsinrowntdi=nTR.insertCell();/Createnewcellntdi.id=TDs0.id;/copytheTDsidtonewcell.|Attention!TheTDss/suffixmustbeappointedntdi.innerHTML=TDsi.innerHTML;/copythevalueinntdisinnerHTMLfromcorrespondingTDs/*Thisfunctionisusetoremoveappointedrowinappointedtable*tabObj:theappointedtable*targPos:targetrowposition*btnObj:currentlyclickeddeleteimagebutton*/functiondeleteRow(tabObj,targPos,btnObj)/Removetablerowfor(vari=0;itabObj.rows.length;i+)if(tabObj.getElementsByTagName(img)i=btnObj)tabObj.deleteRow(i+targPos);前台代码总结: 上面的代码有一个要注意的地方,那就是原始行,我们设置了样式为Display:none,这是因为,下面js中添加行采用的是newTD.innerHTML = sourceTD.innerHTML的方式,即直接把已经存在的列中的内容直接复制到新添加的列的innerHTML属性中,所以隐藏“数据源“列被防止用户删除而出现Object excepted 错误。-VBScript 代码:%#BeginTranscation#conn.beginTransStartatransactionsql=insertintoUserInfo(username,sex)values(sql=sql&request(Name)&,sql=sql&request(Sex)&)Response.Write sql&conn.execute(sql)ifrequest(ProjectName).count0thendimmaxidmaxid=1sql=selectmax(id)asmaxidfromUserInfosetrs=conn.execute(sql)maxid=rs(maxid)rs.closesetrs=nothingfori=1torequest(ProjectName).countsql=insertintoProjectInfo(uid,pname,pdesc,bdate,fdate)values(sql=sql&maxid&,sql=sql&request(ProjectName)(i)&,sql=sql&request(Desc)(i)&,sql=sql&request(BDate)(i)&,sql=sql&request(FDate)(i)&)Response.Write &sql&conn.execute(sql)nextendififconn.Errors.count0thenIfoccusanyerrorinthetransaction,rollbacktranscationconn.RollBackTranselseIfnoterror,mitTransendif conn.close set conn = nothing%后台代码总结: 获取多数据的方法是调用request().count,以count的数目来确定要往主表插入的子表纪录次数。 由于数据操作次数不确定,为了防止在执行数据库操作时发生异常,造成数据不一致。我们采用用事务管理。事务管理具有:原子性,一致性,等特点。可以保证数据安全。我们在数据库操作开始的时候调用conn.beginTrans打开一个事务,在数据操作结束时,用conn.Errors.count来判断在事务期间是否有错误发生,如果发生错误或异常就conn.RollBackTrans回滚。否则提交事务,完成数据库操作。-预览:图一 :进入填写数据页面,点击Add按钮,添加一行,到图二图二:再添加一行并且填写数据到图三图三:在添加了两行数据之后,点击Submit按钮提交数据图四:提交表单后,数据库将会执行如浏览器打印的几条S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化控制技术及其应用
- 工业自动化技术及其实践
- 工作中的团队协作能力提升
- 工业设计与产品外观美学
- 工作压力管理与员工满意度提升
- 工业风格的商业地产装修设计风格探索
- 工程招投标与合同管理解析
- 工作流程优化与时间利用率的提升
- 工程教育中的数据可视化教学
- 工厂安全风险评估与管理体系建设
- 行政案例分析-终结性考核-国开(SC)-参考资料
- 【MOOC】人工智能导论-西安电子科技大学 中国大学慕课MOOC答案
- 《配电自动化系统》课件
- 反恐防暴器械与战术应用讲解
- 创业基础理论与实务(宁波财经学院)知到智慧树章节答案
- 《燃气分布式能源站调试及验收规程》
- 土地租赁协议书样本
- 《某飞机场物业管理服务方案》
- 移动OA系统建设方案
- 2024年重庆高考化学试题卷(含答案解析)
- 人体器官讲解课件
评论
0/150
提交评论