PageableListView不根据需要呈现我的数据

时间:2011-11-20 09:44:43

标签: wicket webpage html-rendering wicketstuff

我正在研究wicket,我应该在

下显示我的数据
<tr>
   <td>Name</td>
   <td>Single Player Score</td>
   <td>Double Player Score</td>
   <td>Total Score</td>
</tr>
<tr wicket:id="data">
   <td wicket:id="name"></td>
   <td wicket:id="singlePlayerScore"></td>
   <td wicket:id="doublePlayerScore"></td>
   <td wicket:id="totalScore"></td>
</tr>

我的播放器模型类如下: 具有属性singlePlayerScore,doublePlayerScore(),带有getter和setter的名称以及从数据库获取的列表数据的Player类。

来自SQLQuery的数据为;

name        score    gamemode
  A           200       singlePlayerMode 
  A           100       doublePLayerMode
  B           400       singlePlayerMode 
  B           300       doublePLayerMode
dataList == player.getScoreList();

我的PageableListView如下:

     final PageableListView listView = new PageableListView("data",dataList,10){
@Override
protected void populateItem(Item item){
    player = (Player)item.getModelObject();
    item.add(Label("name",player.getName()));
    item.add(Label("singlePlayerScore",player.getName()));
    item.add(Label("doublePlayerScore",player.getName()));
    item.add(Label("totalScore",String.valueOf(player.getSinglePlayerScore()+player.getDoublePlayerScore())));
  }
}

我的问题是: 我得到的是:

Name         single Player Score               Double Player Score       Total Score
A              0                                  100                      100
A              200                                 0                       200
B              0                                   300                     300
B              400                                  0                      400

如何在我的网页上实现以下视图?

 Name         single Player Score               Double Player Score       Total Score
    A              200                                  100                     300
    B              400                                  300                     700

请帮助我,为什么会发生这种情况? 我想我的列表有四个大小,这就是为什么渲染视图的原因之一? 那么我该怎么做才能得到渲染视图呢?

1 个答案:

答案 0 :(得分:1)

您必须将SQL查询编辑为以下内容:

SELECT 
    name, 
    sum(singleplayerscore), 
    sum(doubleplayerscore), 
    (sum(singleplayerscore) + sum(doubleplayerscore)) AS totalscore 
FROM `scorelist` GROUP BY name

通过这种方式,每个玩家的得分(列名称)相加,并创建一个额外的列,totalalscore,总得分。