weidegong(weidegong):我等待您的回答!分数绝对的没问题,少了我会再加的!

解决方案 »

  1.   

    首先更正一个你的“误解”---“先在浏览器端执行所有操作,然后一次提交到数据库。”  如果试图用request.getParameterNames()及request.getParameterValue()来获取参数的话,恐怕是不太可行的:这样的话,你需要获取所有表格中的数据--数据量较大;你如何知道哪些行是修改过的,哪些是新添加的记录,在服务器端进行判断也会非常耗费资源;综上,我认为直接提交数据库操作的SQL语句比较好。   SQL语句的形式应该是什么样子的?SQL="inser a... update a ... delte from a where ..." 那么如何记录用户在浏览器端进行的操作呢?这就要求我们用Javascript记录用户所有操作并生成SQL语句。   将SQL语句提交到服务器有什么缺点呢?唉,最大的缺点我想就是加入提交到服务器的SQL语句执行过程中出现错误怎么办?滚回所有事务?判断哪句出错?如何给浏览器返回错误提示信息?总结:获取参数是件很容易的事情,而将整个思路臻于完美实现则需要考虑很多的细节和丰富的Javascript等客户端的知识。
       这个问题也是我一直在思考实现的,但是,他奶奶的,时间也不太充沛,技术力量也不够雄厚:)
       如果能够在这儿因为大家的参与最终达到完美的实现,呵呵,我可一分都不要!
       先写这么多,晚饭后继续讨论。
      

  2.   

    说明:http://www.csdn.net/Expert/TopicView1.asp?id=615826 有我粘上的一段关于增删表格的代码。
    在代码中只有一个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
      

  3.   

    在JSP中:
      String  strA[]= request.getParameterValues("date");
      for (int i=0;i<strA.length;i++) out.println(strA[i]+"<br>");你运行一下就知道了
      

  4.   


    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;
    }
    }
      

  5.   

    1.每行增加一个hidden变量flag,记录当前行的状态:将被添加;将要被修改;将要被删除 §§
    2。增加现有行的原始信息用隐藏域显示,判断该行记录是否被修改;增加每行的主键信息,用于修改删除时确定记录
    3.增加字符数组strDelete:用户删除当前的处理中,将原来的删除行显示,改为将被删除的行增加一个删除标志;
    4.提交前生成SQL语句。扫描所有行:flag为将要删除的,将sql语句加入paramSQL;将要添加的,判断数据是否合法,给出提示或生成SQL语句,加入paramSQL;将要修改的,判断修改后数据是否合法,生成更改语句加入paramSQL 最后,提交该SQL语句
    5.更为棘手的的--服务器端更新数据库处理。