读书人

比较麻烦的有关问题求一解决思路或

发布时间: 2012-09-28 00:03:35 作者: rapoo

比较麻烦的问题,求一解决思路,或代码!


如上图所示:
有表a,b,c
a表为主表,b表为明细表,c表是b表的明细表

a表中的一笔数据最多对应b表中的8笔
b表中的一笔数据最多对应c表中的6笔

现在要实现上图的功能,
格式固定,即c表资料不到6笔时,剩下的栏位空着
b表资料不到8笔时,剩下的栏位空着

用<table>来实现布局,

无需考虑a表的资料!



[解决办法]
用脚本做吧
我觉得对应b表可以外层用for循环8次添加8个<tr></tr>
至于<tr></tr>中是否有值,用if条件判断,如果有值加入值,没有就不加,最好固定好大小不会变形
c表和b表一样做

。。。。希望给你点思路,仅供参考
[解决办法]
这类问题,最好不要汇总考虑,建议将其分割成两步动作:
1、能够独立生成一个个的小数据表,比如 div 里面放 table 之类的;
2、负责将生成好的小表,放入布局表,也就是最外面那个 两行四列;或者外面那个布局表,直接用流式div布局也行。
[解决办法]
给楼主一个大概的代码,可以在html页面上运行看看效果,然后楼主可以根据实际情况修改一下就可以了:
<table style="border:1px solid #000000;border-collapse : collapse" border=1 cellpadding=0 cellspacing=0>
<tr>
<td>
<table>
<tr>
<td colspan=3>1表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
<tr>
<td colspan=3>5表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td colspan=3>1表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>


<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
<tr>
<td colspan=3>5表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td colspan=3>1表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
<tr>
<td colspan=3>5表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td colspan=3>1表</td>


</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
<tr>
<td colspan=3>5表</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td>b</td>
<td>b</td>
<td>b</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=3>合计:</td>
</tr>
</table>
</td>
</tr>
</table>


[解决办法]
关键在于传到前台的数据格式问题,
只要数据格式与上图尽量的吻合,
前台迭代也便简单多了。。。无非用些colspan来解决合并问题。。。

个人建议在后台拼好数据格式后再传到前台直接输出。
不如后台新建个VO类,里面有a1,b1,c1,a2,b2,c2.....a8,b8,c8
List<VO> list传至前台,其中list中共有12条数据,其中某行没有数据是就放一new VO()。。。
总之在后台拼出前台相似的格式要比在前台控制要简单得多。。。
[解决办法]
那我写个例子吧,不知到你后台传过来的数据是个什么样的,那我就当作你的数据分三种,每种table各一个
data了吧,如果不是,你自己用json也好还是其他处理方式自己处理吧


比如,在jquery中先拼写tableA的内容:
var str1='<table>';
然后处理后台传递过来的tableA的内容,for循环、each()迭代随你,

循环时候拼接字符串str1+="<tr><td>xxxxxxx</td><td>xxxxxxx</td><td class='tableB' value= '"+$(this).tableA_id+"'><td></tr>"
xxxx中填写你tableA中的数据,tableA_id是当前数据中a表的id
$("#tableA").html(str1+"</table>");
然后再用类选择器选择你定义的tableB类如:$(".tableB").each()方法去逐个处理
var tableid=$(this).val();

var str2='<table>';
var count=0;
循环中去处理后台传递过来的tableB的内容,
然后循环tableB的数据,if($(this).tableB_Foreign_Key_For_A==tableid ){
str2+="<tr><td>xxxxxx</td><td>xxxxxxx</td><td calss='tableC' value=+'"$(this).tableB_id"'+></td></tr>"
++count;
}
退出当前data的循环后:
if(count<8){
for(var i=count;i<8;i++){
str2+="<tr><td></td><td></td></tr>"
}
然后$(this).html(str2+"</table>");
这样tableB也写完了,按照写tableB一样的方法写tableC,上面的方法虽然计算量挺大,但是应该能满足你的要求,我不能再详细了,今天公司又给我加新任务了~~!有的地方可能手写时候马虎有错误你自己多主意,记得先加载JQuery的js文件,祝你好运

读书人网 >Java Web开发

热点推荐