如何动态生成一个HTML的TABLE?(急)

dinho 2009-06-16 02:25:07
例如:现在有以下数据.

id code address color qty price
1 苹果 北京 红 4 40
2 苹果 北京 青 3 15
3 苹果 北京 黄 10 100
4 苹果 上海 青 5 25
5 苹果 上海 黄 13 130
6 苹果 广东 黄 15 150
7 柑桔 北京 青 4 40
8 柑桔 北京 黄 3 15
9 柑桔 上海 青 10 100
11 柑桔 广东 青 13 130
12 柑桔 广东 黄 15 150
......

要求显示TABLE以下:

code address 红 青 黄
qty price qty price qty price
苹果 北京 4 40 3 15 10 100
苹果 上海 0 0 5 25 13 130
苹果 广东 0 0 0 0 15 150
苹果小计: 4 40 8 40 38 380
(空一行)
code address 青 黄
qty price qty price
柑桔 北京 4 40 3 15
柑桔 上海 10 100 0 0
柑桔 广东 13 130 15 150
柑桔小计: 27 270 18 165
......

总计 31 310 26 205 38 380
...全文
326 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodmrning 2009-06-18
  • 打赏
  • 举报
回复
学习了!
dinho 2009-06-18
  • 打赏
  • 举报
回复
我是说在JAVA里实现统计,并不是说在SQL里做,我没有用SQL的方式去做.你有SQL的做法的话提供给我学习学习一下啊.谢谢..
xnjnmn 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dinho 的回复:]
问一下,SQL怎么实现呢?我用JAVA还差个小计和总计没做好外都做好了..问一下,用JAVA的二维数组进行做统计,可以吗?请指点一下..
[/Quote]

SQL sum(字段)函数不可以做统计吗?
hahabk 2009-06-18
  • 打赏
  • 举报
回复
此处为jsp页面显示:


<table width="100%" cellspacing="0" class="sytable" cellpadding="0" id="bbstr">
<tr>
<th>对应引用版块</th>
<th>引用版块名称</th>

<c:forEach items="${xmllistMap}" var="xml" varStatus="s">
<th>${xml.displayname}</th>
</c:forEach>
<th>最后抓取时间</th>
</tr>


<c:forEach items="${blockxmlpvalueListMap}" var="blockxmlpvalue" varStatus="s">
<tr>
<td>${blockxmlpvalue.code}</td>
<td>${blockxmlpvalue.name}</td>
<c:forEach items="${xmllistMap}" var="xml" varStatus="s">
<td>${blockxmlpvalue[xml.rank]}</td>
</c:forEach>
<td><fmt:formatDate value="${blockxmlpvalue.updatedtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
</tr>

</c:forEach>

</table>
hahabk 2009-06-18
  • 打赏
  • 举报
回复
以下是我做的类,以及在页面上调用的情况,你自己参考一下吧.
@RequestMapping("/xml/infolist.jhtml")
public String infolist(HttpServletRequest req, HttpServletResponse resp,Xml xml,ModelMap modelMap){

if(xml.getId()>0){
XmlParameter xml1=new XmlParameter();
xml1.setXmlId(xml.getId());
List<XmlParameter> xmllist=xmlService.loadXmlParameter(xml1);

//List<Block> blocklist=xmlService.getBlock(xml.getId());
PageInfoList<Block> blocklist=xmlService.queryForBock(xml);

List<BlockXmlPvalue> blockxmlpvalue=xmlService.getBlockXmlPvalue(xml);

ArrayList<HashMap> xmllistMap =this.getXmlListMap(xmllist);
ArrayList<HashMap> blockxmlpvalueListMap =this.getBlockXmlPvalueListMap(blocklist,xmllist,blockxmlpvalue);

modelMap.addAttribute("xmllistMap",xmllistMap);
modelMap.addAttribute("blockxmlpvalueListMap",blockxmlpvalueListMap);
modelMap.addAttribute("blocklist",blocklist);
}


return "xmlview.infolist";
}

/**
* 将list转换成map(即将纵表的数据拼接成横表展示)
*
* @param xmllist 数据集合
* @return list 返回组合好的数据集合
*/
private ArrayList<HashMap> getXmlListMap(
List<XmlParameter> xmlList) {
ArrayList<HashMap> reXmlList = new ArrayList<HashMap>();
HashMap hashMap = null;

// 将结果封装到map里
for (XmlParameter xmlParameter : xmlList) {
hashMap = new HashMap();
hashMap.put("xmlId", xmlParameter.getXmlId());
hashMap.put("displayname", xmlParameter.getDisplayName());
hashMap.put("type", xmlParameter.getType());
hashMap.put("rank", xmlParameter.getRank());

reXmlList.add(hashMap);
}

return reXmlList;
}

/**
* 将list转换成map(即将纵表的数据拼接成横表展示)
*
* @param xmllist 数据集合
* @return list 返回组合好的数据集合
*/
private ArrayList<HashMap> getBlockXmlPvalueListMap(
List<Block> blocklist,
List<XmlParameter> xmlList,
List<BlockXmlPvalue> blockxmlpvalue) {
ArrayList<HashMap> reblockxmlpvalueList = new ArrayList<HashMap>();
HashMap hashMap = null;
int ListSize = blockxmlpvalue.size();
// 将结果封装到map里
for (Block block : blocklist) {
hashMap = new HashMap();
hashMap.put("xmlId", block.getXmlId());
hashMap.put("code", block.getCode());
hashMap.put("name", block.getName());
String parameterValues="";
for (int i = 0; i < ListSize;i++) {
BlockXmlPvalue fblockxmlpvalue = blockxmlpvalue.get(i);
if (block.getCode().equals(fblockxmlpvalue.getBlockCode())) {

hashMap.put(fblockxmlpvalue.getRank(), fblockxmlpvalue.getValue());

if (i == 0) {
parameterValues = blockxmlpvalue.get(i).getValue() + ",";
} else {
parameterValues += blockxmlpvalue.get(i).getValue()+",";
}

blockxmlpvalue.remove(blockxmlpvalue);
}
}

XmlData xmldata1=new XmlData();
xmldata1.setXmlId(block.getXmlId());
xmldata1.setParameterValues(parameterValues);
List<XmlData> xmldata=xmlService.loadXmlData(xmldata1);
if(xmldata.size()>0){
hashMap.put("updatedtime", xmldata.get(0).getUpdatedTime());
}

reblockxmlpvalueList.add(hashMap);
}
return reblockxmlpvalueList;
}
dinho 2009-06-18
  • 打赏
  • 举报
回复
问一下,SQL怎么实现呢?我用JAVA还差个小计和总计没做好外都做好了..问一下,用JAVA的二维数组进行做统计,可以吗?请指点一下..
  • 打赏
  • 举报
回复
我并不认为页面上要显示成什么样子,我们写出来的 SQL 查询结果就得是这个样子的。

希望能理解一下。
gojav 2009-06-17
  • 打赏
  • 举报
回复
似乎重点不应该在HTML上吧?应该是SQL上吧?SQL照着楼上的写就成了。
xfzhuhan 2009-06-16
  • 打赏
  • 举报
回复
up
liaofengbo1 2009-06-16
  • 打赏
  • 举报
回复
这个好像很难弄啊
不过很有意思
bingsha1976 2009-06-16
  • 打赏
  • 举报
回复
oracle数据库
表名:aaa
id code address color qty price
1 苹果 北京 红 4 40

1、select distinct code from aaa;

2、select code,address,sum(qty1),sum(qty2),sum(qty3) from(
select code,address,qty as qty1,0 as qty2,0 as qty3 from aaa where color='红'
union
select code,address,0 as qty1,qty as qty2,0 as qty3 from aaa where color='青'
union
select code,address,0 as qty1,0 as qty2,qty as qty3 from aaa where color='黄'
) group by code,address


3、1,2步骤各放入一个集合,第一个集合外层循环,第二集合为内层循环

看看自己能不能处理了
dinho 2009-06-16
  • 打赏
  • 举报
回复
我用过SQL写,但显示水果数据里的东西不是固定的,是另一个数据表里的内容.看起来容易,但实现起来并不容易..
请指点一下.

还有.2楼的第一种方法,我现在在试,谢谢..
jackson416 2009-06-16
  • 打赏
  • 举报
回复
本人认为在SQL列出比HTML列出好做。
老紫竹 2009-06-16
  • 打赏
  • 举报
回复
有2个方法,我只说思路,不愿意看就算了。
一、 按照品种地点排序数据,然后开始循环
1 显示一个水果的品种和产地
2 显示水果数据
3 下一个
4 判断,如果和上一个品种和产地相同,则在后面继续显示,转2
5 显示空白(显示的数量根据你知道的颜色数量和前面已经显示的颜色数量而定,转1,开始新的一行

二、用sql语句,将数据放到一行里面
去搜索关键字
数据库 行转列
的SQL语句就行了,不复杂的。
zhanghua4109 2009-06-16
  • 打赏
  • 举报
回复
用sql查好,直接出来就行了.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧