asp+jsp+JavaScript动态实现添加数据行

在应用程序的开发中,有些输入信息是动态的,比如我们要注册一个员工的工作经历,比如下图

如果做成死的,只能填写三个,如果是四个呢?或者更多呢,那不是添加不上去了吗,所以这样固然不好,我们可以用动态添加表格行实现,如下图,添加一行,输入一行信息,这样比较灵活

下面我们就来看看如何在asp和asp.net中结合javascript来实现这种效果:
首先,动态添加表格是要在前台实现的,当然后台也可以,不过可能要用到ajax,很麻烦,所以最好采用javascript来实现,下面来介绍动态添加表格行的两种方式:
第一种:源码
Javascript:

 <script type="text/javascript">
 /**//*This function is use to add one row dynamicly
* tabObj : Target table
* colNum: The number of columns that of a row in table
* sorPos: The source of the new row.
* targPos: The position where the new row will be added.
*
*/
function addRow(tabObj,colNum,sorPos,targPos){
var nTR = tabObj.insertRow(tabObj.rows.length-targPos); // Insert a new row into appointed table on the
//appointed position.
var TRs = tabObj.getElementsByTagName('TR'); // Get TRs collection from the appointed table
var sorTR = TRs[sorPos]; // Positioned the sorTR
var TDs = sorTR.getElementsByTagName('TD'); // Get TDs collection from the appointed row
if(colNum==0 || colNum==undefined || colNum==isNaN){
colNum=tabObj.rows[0].cells.length;
} 

var ntd = new Array(); // Create a new TDs array
for(var i=0; i< colNum; i++){ // Traverl the TDs in row
ntd[i] = nTR.insertCell(); // Create new cell
ntd[i].id = TDs[0].id; // copy the TD's id to new cell. | Attention! The TDs's
//suffix must be appointed
ntd[i].innerHTML = TDs[i].innerHTML; // copy the value in ntd[i]'s innerHTML from corresponding TDs
} 

}
/**//* This function is use to remove appointed row in appointed table
* tabObj: the appointed table
* targPos: target row position
* btnObj: currently clicked delete image button
*
*/
function deleteRow(tabObj,targPos,btnObj){ //Remove table row
for(var i =0; i<tabObj.rows.length;i++){
if(tabObj.getElementsByTagName('img')[i]==btnObj){
tabObj.deleteRow(i+targPos);
}
}
}
</script>

Html

<table id=tabUserInfo border=1 width="720">
<tr>
 <td>姓名</td>
 <td>性别</td>
 <td>年龄</td>
 <td>爱好</td>
<td>Delete</td>
</tr>
<tr style="display:none" id=trUserInfo>
<td id=tdUserInfo><input id=username name=username ></td>
<td id=tdUserInfo><input id=usersex name=usersex></td>
<td id=tdUserInfo><input id=userage name=userage></td>
<td id=tdUserInfo><input id=userlove name=userlove></td>
<td id=tdUserInfo>
<img alt="Delete" onClick="deleteRow(document.all.tabUserInfo,1,this)">
</td>
</tr>
<tr>
<td>

<input type=button value="Add" onClick="addRow(document.all.tabUserInfo,null,1,1)"></td>
</tr>
</table>

在这里有点要注意:<tr  style="display:none" id=trUserInfo> 主要是为了,添加数据的时候,文本框中的值都是空的,要不然添加的 新行都是有值的,这样很不好,当然了,为了防止读取的是空值,在后面获得数据组的时候,我们从索引1开始获得值,这个在后面会讲到

第二种方式:
JavaScript

<script type="text/javascript">
 function addRow()
 {
  var root = document.getElementById("tbody")
  var allRows = root.getElementsByTagName('tr');
  var allCells = allRows[0].getElementsByTagName('td');
  var newRow = root.insertRow();
  var newCell0 = newRow.insertCell();
  var newCell1 = newRow.insertCell();
  var newCell2 = newRow.insertCell();
  var newCell3 = newRow.insertCell();
  newCell0.innerHTML = allCells[0].innerHTML;
  newCell1.innerHTML = allCells[1].innerHTML;
  newCell2.innerHTML = allCells[2].innerHTML;
  newCell3.innerHTML = allCells[3].innerHTML;

 }
 function removeRow(r)
 {
 var root = r.parentNode;
 root.deleteRow(r);
 }
 </script>

Html

 <table border="1">
  <tr>
  <td>aaaa</td>
  <td>bbbb</td>
  <td>cccc</td>
  <td>操作</td>
 </tr>
  <tr>
  <td><select></select></td>
  <td><input id="Text1" type="text" /></td>
  <td><input id="Text2" type="text"/></td>
  <td></td>
 </tr>
 <tbody id="tbody">
 <tr style="display:none">
  <td><select></select></td>
  <td><input id="a" type="text" /></td>
  <td><input id="b" type="text"/></td>
  <td><input type="button" value="remove" onclick="removeRow(this.parentNode.parentNode)"/></td>
 </tr>
 </tbody>
 </table>
 <table><tr><td><input type="button" value="add" onclick="addRow()" /></td></tr></table>

注意:和第一个基本类似,如果你希望默认的情况下就有一行,那么可以静态的添加一行

下面,就来看看如何通过后台完成对其操作,比如对新增行的修改,删除,添加等
首先说一下数据库的问题
对于这些需要动态添加的表格行的记录,我们需要重新放到放到一个表里,就是单独做一个表,比如上面说到的工作经历的 问题当然了,员工要有一个员工表,记录姓名,年龄,身份证,学历等信息,对于工作经历这块,就需要单独做一个工作经历表,然后根据外键,建立他们之间的关系,这是数据库方面的设计
下面就来看看如何在asp中实现这些
添加操作:
代码:

<!--#include file="inc/conn.asp" -->
<%
 if request("tj")="添 加" then
 set rs=server.CreateObject("adodb.RecordSet")
 strsql="select * from tb_person"
 rs.open strsql,conn,2,3
 for i =1 to request("username").count
 rs.addnew()
 rs("userName")=request("username")(i)
 rs("sex")=request("usersex")(i)
 rs("age")=request("userage")(i)
 rs("aihao")=request("userlove")(i)
 rs.update
 next
 end if

%>
<html>
<head>
<script src="myjs.js"></script>
</head>
<body>
<form name=frmUserInfo action="user_list1.asp" method=post>
<br>
<table id=tabUserInfo border=1 width="720">
<tr>
 <td>姓名</td>
 <td>性别</td>
 <td>年龄</td>
 <td>爱好</td>
<td>Delete</td>
</tr>
<tr style="display:none" id=trUserInfo>
<td id=tdUserInfo><input id=username name=username ></td>
<td id=tdUserInfo><input id=usersex name=usersex></td>
<td id=tdUserInfo><input id=userage name=userage></td>
<td id=tdUserInfo><input id=userlove name=userlove></td>
<td id=tdUserInfo>
<img alt="Delete" onClick="deleteRow(document.all.tabUserInfo,1,this)">
</td>
</tr>
<tr>
<td>

<input type=button value="Add" onClick="addRow(document.all.tabUserInfo,null,1,1)"></td>
</tr>
</table> 

<table>
<tr><td><input type="submit" value="添 加" name="tj" /></td></tr>
</table>
</form>
</body>

注意:在这里我们可以直接通过request("username")获得username列的数组值,通过调试可以看到,第一个(索引为0)值为",",所以获得值的时候我们要从索引为1开始读取,然后逐一添加操作即可

修改:
首先根据外键循环读取数据到一个表格里,代码:

<form name=frmUserInfo action="user_list1.asp" method=post>
<br>
<table border=1 width="720">
<tr>
 <td>姓名</td>
 <td>性别</td>
 <td>年龄</td>
 <td>爱好</td>
<td>Delete</td>
</tr>
<%
 set rs=server.CreateObject("adodb.RecordSet")
 strsql="select * from tb_person"
 rs.open strsql,conn,2,3
 do while not rs.eof
%>
<tr id=trUserInfo1>
<td id=tdUserInfo1><input id=username1 name=username1 value="<%=rs("userName")%>" ></td>
<td id=tdUserInfo1><input id=usersex1 name=usersex1 value="<%=rs("age")%>"></td>
<td id=tdUserInfo1><input id=userage1 name=userage value="<%=rs("sex")%>"></td>
<td id=tdUserInfo1><input id=userlove1 name=userlove value="<%=rs("aihao")%>"></td>
<td id=tdUserInfo>
<input type="submit" value="删除" />
<!--<img alt="Delete" onClick="deleteRow(document.all.tabUserInfo,1,this)"> --></td>
</tr>
<%
 rs.movenext
 loop
%>
<table id=tabUserInfo border=1 width="720">
<tr>
 <td></td>
 <td></td>
 <td></td>
 <td></td>
<td></td>
</tr>
<tr style="display:none" id=trUserInfo>
<td id=tdUserInfo><input id=username name=username ></td>
<td id=tdUserInfo><input id=usersex name=usersex></td>
<td id=tdUserInfo><input id=userage name=userage></td>
<td id=tdUserInfo><input id=userlove name=userlove></td>
<td id=tdUserInfo>
<img alt="Delete" onClick="deleteRow(document.all.tabUserInfo,1,this)">
</td>
</tr>
<tr>
<td>

<input type=button value="Add" onClick="addRow(document.all.tabUserInfo,null,1,1)"></td>
</tr>
</table> 

我的思路是把以前添加的记录和现在要添加的记录行分开操作,如果我们要删除记录行,或者修改记录行可以这样操作
首先删除所以记录,然后重新添加以前的记录和现在的记录,至于代码和添加的思路是一样的,只不过这里面分两个添加来完成的具体的代码,大家可以自己尝试一下

下面在看看在asp.net中如何实现
如果使用asp.net自带的控件封装模式,很难实现,所以这里我们可以采用上面讲到的asp的思想来完成
js和html都一样,不一样的是后台的代码:
比如说添加吧

 protected void Button1_Click(object sender, EventArgs e)
 {

  string username = Request["username"].ToString();
  string[] namelist = username.Split(',');
  string[] sexlist = username.Split(',');
  string[] agelist = username.Split(',');
  string[] lovelist = username.Split(',');
  for (int i = 1; i < namelist.Length; i++)
  {
   //获得传递过来的值,对其操作
   string name = namelist[i].ToString();
   string usersex = sexlist[i].ToString();
   string userage = agelist[i].ToString();
   string userlove = agelist[i].ToString();
   //对其操作,比如添加修改等
  }

 }

在这里我们使用Request["username"]来获得值,页面用的是html标签,不是服务器端的控件,不用使用.value或者Text来实现, 这样就可以用asp或者jsp的思想来处理了。
同样,修改和删除的也可以使用asp或者jsp的思想来处理。
或者从提交到处理完全采用jsp和asp的思想,创建一个HttpHandler,把数据都提交到这里面处理,这样也可以,不过第一种方法好些,这样容易获得值并处理,不需要转换什么的。

具体的问题具体对待,比如需要默认就有一行,这个时候就需要在员工表里添加工作记录的字段,这一行的记录都添加到员工表里,然后编辑删除的时候需要先编辑,然后进行两个添加等。
大体实现添加数据行的思路就是这样,有什么问题,希望大家给予指正....

(0)

相关推荐

  • jsp连接MySQL操作GIS地图数据实现添加point的功能代码

    index_map.jsp中的代码: 复制代码 代码如下: <%@ page language="java" pageEncoding="utf-8"%> <%@ page contentType="text/html;charset=utf-8"%>  <%     request.setCharacterEncoding("UTF-8");     response.setCharacterE

  • JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法

    本文实例讲述了JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法.分享给大家供大家参考.具体如下: 一.目标: ① 掌握JDBC链接数据库的基本过程: ② 掌握使用JDBC进行数据查询. 二.主要内容: ① 在上一次的实例基础上,通过连接数据库完成用户登录功能,介绍JDBC的基本用法: ② 通过显示所有用户信息进一步介绍JDBC的用法和查询结果的处理. 1.JDBC概念 Java Database Connectivity的缩写,用于连接Java应用程序与各种关系数据库的标准接口.对于

  • JSP实现添加功能和分页显示实例分析

    本文实例讲述了JSP实现添加功能和分页显示的方法.分享给大家供大家参考.具体如下: 学习目标: ① 进一步掌握MVC设计模式: ② 掌握添加功能的实现: ③ 掌握分页显示功能的实现. 主要内容: ① 通过用户信息添加功能进一步介绍MVC模式: ② 通过用户信息的分页显示介绍分页显示功能的原理和实现. 1.如何采用MVC模式完成用户添加? 首先考虑与人如何交互:应该有一个输入用户信息的界面,包含用户名和口令,另外需要一反馈的界面. 然后考虑功能如何实现:需要在User类中添加一个方法,完成用户信息

  • 高效的jsp分页查询

    Jsp如下:**********************<%@ page language="java" import="java.util.*,java.sql.*" %><%@ page contentType="text/html;charset=gb2312"%><jsp:useBean id="cn" scope="page" class="myConnec

  • JSP简单添加,查询功能代码

    本文实例讲述了JSP简单添加,查询功能.分享给大家供大家参考.具体如下: JSP技术: public class ISOtoGb2312 { public static String convert( String str ) { try { byte<> bytesStr=str.getBytes( "ISO-8859-1" ) ; return new String( bytesStr, "gb2312" ) ; } catch( Exception

  • jsp中两个框中内容互换可以添加也可以移除

    在项目中需要实现如下的效果内容.如图: 具体实现的源码如下: 两个框的页面源码: 已选角色:<br /> <select multiple="multiple" name="roleIds" size="10" id="roleIds"> <option value="1"> 主任 </option> <option value="2"

  • jsp操作MySQL实现查询/插入/删除功能示例

    直接贴代码吧: 首先,index_test.jsp页面的代码如下: 复制代码 代码如下: <%@ page language="java" pageEncoding="utf-8"%> <%@ page contentType="text/html;charset=utf-8"%>  <%     request.setCharacterEncoding("UTF-8");     respons

  • asp+jsp+JavaScript动态实现添加数据行

    在应用程序的开发中,有些输入信息是动态的,比如我们要注册一个员工的工作经历,比如下图 如果做成死的,只能填写三个,如果是四个呢?或者更多呢,那不是添加不上去了吗,所以这样固然不好,我们可以用动态添加表格行实现,如下图,添加一行,输入一行信息,这样比较灵活 下面我们就来看看如何在asp和asp.net中结合javascript来实现这种效果: 首先,动态添加表格是要在前台实现的,当然后台也可以,不过可能要用到ajax,很麻烦,所以最好采用javascript来实现,下面来介绍动态添加表格行的两种方

  • javascript 动态脚本添加的简单方法

    异步加载js文件或者异步加载js模块,支持所有浏览器,包括IE,参考至javascript高级编程 1.createScript方法用于创建一个script标签并添加到body标签中 2.createModule方法用于创建一个script脚本的标签,并且如果在IE8以下的版本运行会抛出异常,在异常捕获模块中执行script.text兼容IE添加js的脚本内容. <button id="demo">js文件</button> <button id=&quo

  • javascript 动态样式添加的简单实现

    异步加载css文件或者异步加载css模块,支持所有浏览器,包括IE,参考至javascript高级编程 1.createLink方法用于创建一个style标签并添加到head标签中 2.createModule方法用于创建一个style样式表的标签,并且如果在IE8以下的版本运行会抛出异常,在异常捕获模块中执行style.styleSheet.cssText兼容IE添加style的样式内容. <button id="demo">css文件</button> &l

  • Java动态数组添加数据的方法与应用示例

    本文实例讲述了Java动态数组添加数据的方法与应用.分享给大家供大家参考,具体如下: 输入客户的姓名,客户的人数不定.待输入完成后,请打印出客户的名单,并定义一个方法查询客户是否在这些客户中. 代码示例: package com.jredu.ch06.exer; import java.util.Arrays; import java.util.Scanner; public class CustomBiz { public String[] custom; public void addNam

  • js遍历、动态的添加数据的小例子

    复制代码 代码如下: function jsonObj(){     var person= {name: 'zhangsan',pass: '123' ,'sni.ni' : 'XMQ',back:function (){         for(var i=0;i<arguments.length;i++){         //在不知参数个数情况下可通过for循环遍历         // arguments这个是js 默认提供         alert("arr["+i

  • javascript 动态table添加colspan\rowspan 参数的方法

    解决方法:取得表对象,并取得他下面对应的行对象下的某个元素,这里如document.tableId.rows[i].cells[j]即取得表下第i行下的第j个元素,然后document.tableId.rows[i].cells[j].colspan=n即可. eg: dempTHFirst为要增加行或列属性的元素. demoThFirst.colSpan=3;

  • javascript动态添加表格数据行(ASP后台数据库保存例子)

    在很多web应用中,我们会遇到很多需要动态插入多行纪录的地方.比如,在人才网站上,我们填写简历的时候,我们要填写我们的项目经验,我们可以根据自己的实际情况动态的添加条数,这种不是以单独页面的形式添加,这种动态添加是在同一个页面下动态添加,最后再一起提交到服务器保存到数据库中. 本文,我将以一个类似的例子来做一个前台用Javascript动态添加数据项,后台保存到数据库的例子. 浏览器:IE.6.0 后台:ASP (VBScript ) 前台:HTML + JavaScript HTML代码: 复

  • JavaScript中动态向表格添加数据

    利用JavaScript ,动态向表格中添加数据,其实方法很简单的,下面给大家分享下实现方法 1. 首先先写出表格的表头和主干部分 <table width="600" border="1" cellspacing="0"> <thead> <tr> <th>编号</th> <th>姓名</th> <th>职位</th> <th>

  • javascript 动态添加表格行

    表格部分代码如下: <table id="testTbl" border=1> <tr id="tr1"> <td width=6%><input type=checkbox id="box1"></td> <td id="b">第一行</td> </tr> <tr id="tr2"> <td

  • javascript动态创建表格及添加数据实例详解

    本文实例讲述了javascript动态创建表格及添加数据的方法.分享给大家供大家参考.具体分析如下: 1. 动态创建表格(代码不兼容IE6) <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>动态

随机推荐