在一个jsp页面中,有多个表单A,B,C,一般显示A,B页面,C不显示,当点击B表单中的某行的按钮Button1时,显示C表单。
原来设计B,C表单的内容同时从数据库读取,C不显示,因为BC的内容都很多,页面显示很慢。现在我想先读取B表单内容,当点击Button1时候,再读取C表单内容,并显示C。
应用常见的例子是书籍查询,B显示查询的书籍,然后点击B中某行书籍Book1的“详细信息”按钮时才从数据库读取该数据,并显示book1的详细内容在C表单。这个是原来别人写的,我现在修改,头都大了。十分感谢!!

解决方案 »

  1.   

    谢谢,没用其他比较一般的方法吗?
    我也是刚刚接触web jsp开发
    另外能否详细一点点
    十分感谢
      

  2.   

    另外一个比较普通的方法就是使用iframe ,将book的详细信息放到iframe里边,具体实现可以上网查
      

  3.   

    谢谢   tianzhiouc
    我google看看
      

  4.   

    我简单的看了iframe,发现不是很适合,iframe把另外一个页面嵌入到一个页面中。
    可能我没用说清楚,现在是一个A.jsp页面,所有的表单都在A页面,不改为多个页面。
    原来的实现方法在该页打开时候,把form B的很多行的内容填充,
    同时,表单B的列Button1“详细”有很多数据,此时也同时从服务器获得,
    但数据不显示,表单C也不显示,只有按Button1时候,C显示Button1所在行的详细内容。
    由于数据很多,特别是把B每行的详细都从服务器获取,这没用必要,
    在刷新页面时候速度很慢,我想把数据分两次读取
    打开A页时候,C不显示,B显示,但Button列的数据从服务器获取,该列仅仅显示“详细”。
    只有点击Button1详细时候,C显示需要显示内容。
    请问,怎么修改?谢谢
    在线等!!//bow
      

  5.   

    我简单的看了iframe,发现不是很适合,iframe把另外一个页面嵌入到一个页面中。  
    可能我没用说清楚,现在是一个A.jsp页面,所有的表单都在A页面,不改为多个页面。  原来的实现方法在该页打开时候,把form  B的很多行的内容填充,  
    同时,表单B的列Button1“详细”有很多数据,此时也同时从服务器获得,  
    但数据不显示,表单C也不显示,只有按Button1时候,C显示Button1所在行的详细内容。  
    由于数据很多,特别是把B每行的详细都从服务器获取,这没有必要,  
    在刷新页面时候速度很慢,我想把数据分两次读取  
    打开A页时候,C不显示,B显示,但Button列的数据不从服务器获取,该列仅显示“详细”。  
    只有点击Button1详细时候,B表单的行的详细信息才从服务器获取,
    然后在C显示需要显示的Button1的内容。  
    请问,怎么修改?谢谢  
    在线等!!//bow
      

  6.   

    显示B时候,C不显示,这个不是重点,就算显示可以显示空内容呀,
    只有点击Button1时候才获取内容并显示C
    重要的是如何点击时候获取数据并显示,是呀,我现在正慢慢的改为两个页面,当然了如果能一个页面实现不改了
      

  7.   

    for i=0;i<ArrayofRowofB.size();i++
    {
       填写form B的列内容
       //填写B的Button1列
       <input type="button" name="modify" value="Button1" onclick="设置form属性;ttt()" />
       原来写的ttt()部分很复杂,一行代码800多字符,ft,形参用Array传入,并且形参很复杂,以new Array(详细信息的条目1,...)而且条目还是用for循环用函数调用获得。
       ttt()是javascript根据参数用createElement(option)对应生成form C的填充内容.
    }
    现在程序就是在这里很费时,另外问一句,onclick不点击时候,ttt等语句执行吗?为什么这里很费时。现在想把onclick改写,首先我把形参部分简单,进入函数ttt后在活动相应的Array参数,可是功能不能实现,请大家多指点。
    或者大家有什么好的方法解决这个问题?  //bow这个代码让我佩服,这样也能写出来,虽然很垃圾,不过也是垃圾的极品呀
      

  8.   

    看你上面的问题,读取数据的代码放在jsp页面里的吗?
    如果是的话,最好是将读取数据那部分代码独立在一个.java文件中.
      定义一个方法,将每条记录以"键之对"的方式put(key,Object)到一个HashTable对象
      中(ArrayList也可以,只是用HashTable方便在点击"详细"时用不着一个一个地判断符合条件的记录)
        key:为能够准确区分各条记录的列在当前记录的值
        Object:为当前记录映射成的对象即:java bean
      返回HashTable对象
    并在severlet里面将HashTable对象放入session里面
    在jsp页面取得HashTable对象,并将它赋值给本页面的HashTable对象,用不着再次从数据库中读取数据,在B中遍历HashTable的所有values就可以,可以用一个变量来判断是否点击了"详细"(逻辑值)
    而在电击"详细"时,在页面写C表单元素.用提交的方式将与上面key相符的值提交到本页面,并找到HashTable中对应的Object,并将值一一显示在C中相应的表单元素上.即可
      

  9.   

    那你为什么要用两个form吗,用一个form不行吗,先把某一些信息在页面的上面显示出来,当点了详细信息按钮以后,再把C给显示出来,可以把C的form放到一个div里面,一开始让他隐藏。
      

  10.   

    谢谢 hui_bing, 我认真再考虑一下
    另外所说的读取数据做成一个java文件,
    指的是点击详细按钮所在行的详细数据,而不是B表单的数据吧?to chumignze
    现在是提前把B的所有行的详细数据都读出来了,可实际不需要,
    仅仅需要获取点击的某行的详细信息,这样导致速度很慢
    另外是把C的form放入到div中,在数据获取也没用特别的改进呀谢谢大家关注