浏览 980 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-08-29
person.jsp页面
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <script language="JavaScript" src="../js/prototype.js"></script> <script language="JavaScript" src="../js/buffalo.js"> </script> <script language="JavaScript" src="../js/common.js"> </script> <title>信息查询</title> </head> <body> <div style="text-align:center;font-size:18px;">个人信息管理</div><br /><br / <div align="center" >请输入查询的工号:<input type="text" id="number" style="width:150px" onblur="bindTable(table1)"/></div><br /> <table width="100%" border="1" id="table1" align="center" jheight="1" cellpadding="0" cellspacing="0"> <tr> <td>工号</td> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>电话号码</td> <td>家庭地址</td> </tr> <tr> <td jtext="id">id</td> <td jtext="name">name</td> <td jtext="sex">sex</td> <td jtext="age">age</td> <td jtext="phone">phone</td> <td jtext="address">address</td> </tr> </table> </body> </html> common.jsp function bindTable(tableId){ var END_POINT="../bfapp"; var buffalo=new Buffalo(END_POINT); var number = document.getElementById("number").value; buffalo.remoteCall("PersonInformation.getInformation", [number], function(reply) { if (!reply.isFault()){ var array=reply.getResult(); Buffalo.bind(tableId,array); } }); } 希望各位指点。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-04-10
Buffalo在绑定table时的Bug及解决办法
Buffalo版本:Buffalo.VERSION="2.0"; 问题再现: 在调用Buffalo.Bind.bind绑定table时,jHeight为3,即table第一行为表头,第二行为奇数行样式,第三行为偶数行样式,第一次读取数据行数为3,没有问题,但是第二次(以此类推)返回的数据行数如果小于2,比如数据只有一行,就会留下上次数据的第二行没有被删除掉,正常情况是应该出现一行数据,但是却出现了两行数据,第二行是上次数据遗留下来的第二行,又比如当返回的数据行数为0,期待的应该是没有数据行出现,但是会出现上次数据的前两行,总的来说就是当jHeight为3时,如果数据小于两行,就会出现删除不干净的情况. 分析: 看了下原代码,在分析buffalo.js里的"bindTable: function(elem, value) "这个函数发现了其绑定的实现是每次绑定时,先删除掉除了一二三行以外的所有行(jHeight为3时),第二三行直接取原来表格的第二三行,后面的行按奇偶克隆二三行,采取了先删除多余行,再添加和返回的数据长度一样的行,再填充数据的办法,这时候问题就来了,因为其添加的行数是按照返回的数据长度添加的,如果返回的数据行数小于2,比如只有一行,那么,绑定时就会先删除原来数据的所有行,剩下前三行,然后往里面填充数据,因为只有一行数据,故只有第一行的数据(也就是表格的第二行)被更新,第二行数据(也就是表格的第三行)没有被删除掉,依然是上次的数据的第二行(也就是表格的第三行),以此类推,当返回数据的长度为0时,就会出现上次遗留的两行数据,而不是出现期待的数据行为空,同理,当jHeight为2时也会出现该情况. 解决办法: 在尽量不影响源代码的指导下,我采取了隐藏多余行的办法可以完美解决: 在buffalo.js里的bindTable: function(elem, value)中(大概在760行左右): 1.if (jHeight == 2) {//加上下面5行 if(value.length==0){//没有值 tBody.rows[1].style.display='none'; }else{ tBody.rows[1].style.display=''; } ...... 2.if (jHeight >= 3) {//加上下面10行 if(value.length==0){//没有值 tBody.rows[1].style.display='none'; tBody.rows[2].style.display='none'; }else if(value.length==1){//有一行值 tBody.rows[2].style.display='none'; tBody.rows[1].style.display=''; }else{ tBody.rows[1].style.display=''; tBody.rows[2].style.display=''; } ...... |
|
| 返回顶楼 | |


