首先更正一个你的“误解”---“先在浏览器端执行所有操作,然后一次提交到数据库。” 如果试图用request.getParameterNames()及request.getParameterValue()来获取参数的话,恐怕是不太可行的:这样的话,你需要获取所有表格中的数据--数据量较大;你如何知道哪些行是修改过的,哪些是新添加的记录,在服务器端进行判断也会非常耗费资源;综上,我认为直接提交数据库操作的SQL语句比较好。 SQL语句的形式应该是什么样子的?SQL="inser a... update a ... delte from a where ..." 那么如何记录用户在浏览器端进行的操作呢?这就要求我们用Javascript记录用户所有操作并生成SQL语句。 将SQL语句提交到服务器有什么缺点呢?唉,最大的缺点我想就是加入提交到服务器的SQL语句执行过程中出现错误怎么办?滚回所有事务?判断哪句出错?如何给浏览器返回错误提示信息?总结:获取参数是件很容易的事情,而将整个思路臻于完美实现则需要考虑很多的细节和丰富的Javascript等客户端的知识。 这个问题也是我一直在思考实现的,但是,他奶奶的,时间也不太充沛,技术力量也不够雄厚:) 如果能够在这儿因为大家的参与最终达到完美的实现,呵呵,我可一分都不要! 先写这么多,晚饭后继续讨论。
这个问题也是我一直在思考实现的,但是,他奶奶的,时间也不太充沛,技术力量也不够雄厚:)
如果能够在这儿因为大家的参与最终达到完美的实现,呵呵,我可一分都不要!
先写这么多,晚饭后继续讨论。
在代码中只有一个Form对象,名字叫做“ecform”,包括的elements有date、diagnosis、medication。使用Javascript得到ecform中的所有元素:(line:行数)document.all("date")[line].value
document.ecform.date[line].value
document.all.tags('input')["date"][line].value
document.getElementsByName("date")[line++].value
String strA[]= request.getParameterValues("date");
for (int i=0;i<strA.length;i++) out.println(strA[i]+"<br>");你运行一下就知道了
weidegong(weidegong):谢谢!我昨天晚上已解决:方法和您讲的一样。
如下:
String strA[]= request.getParameterValues("date");
for (int i=1;i<strA.length;i++) out.println(strA[i]+"<br>");并加入了提交时的检测功能如下:<form action = "exportcreate_o.jsp" method = "post" name = "createbargain" onSubmit = "return isValid();">.....</form>function isValid()
{
var boolean = true;if (PLList.rows.length == 1)
{
boolean = false;
alert("no row save!");
return boolean;
}for (i =1;i<PLList.rows.length;i++)
{
if(document.createbargain.pname[i].value.length == "")
{
alert(i + " row Product Name not empty!");
document.createbargain.pname[i].focus();
boolean = false;
return boolean;
}
else if(document.createbargain.quantity[i].value.length == "")
{
alert(i + " row Permity Quantity not empty!");
document.createbargain.quantity[i].focus();
boolean = false;
return boolean;
}
else if(document.createbargain.weight[i].value.length == "")
{
alert(i + " row Permity Weight not empty!");
document.createbargain.weight[i].focus();
boolean = false;
return boolean;
}
else if(document.createbargain.price[i].value.length == "")
{
alert(i + " row price not empty!");
document.createbargain.price[i].focus();
boolean = false;
return boolean;
}
}if (boolean)
{
return true;
}
else
{
return false;
}
}
2。增加现有行的原始信息用隐藏域显示,判断该行记录是否被修改;增加每行的主键信息,用于修改删除时确定记录
3.增加字符数组strDelete:用户删除当前的处理中,将原来的删除行显示,改为将被删除的行增加一个删除标志;
4.提交前生成SQL语句。扫描所有行:flag为将要删除的,将sql语句加入paramSQL;将要添加的,判断数据是否合法,给出提示或生成SQL语句,加入paramSQL;将要修改的,判断修改后数据是否合法,生成更改语句加入paramSQL 最后,提交该SQL语句
5.更为棘手的的--服务器端更新数据库处理。