【发布时间】:2014-01-24 08:45:11
【问题描述】:
我使用它的GAE+GWT+GXT-GWT的环境
我正在做一个 sql 查询并将结果返回到一个列表中。
List 的结构是这样的:
::12::AA254712::34::5::7::ZTA
::13::AA245789::3::7::8::XMA
::15::AA254712::4::7::5::ZTA
根据我的客户需要,我正在创建一个 HtmlLayoutContainer (GXT-GWT),拆分每个数据行,将这些值分配给小部件(文本框和标签),然后通过 add 方法将这些值提供给之前定义的 HtmlLayoutContainer。
因此打印的数据遵循这个模式:
ORDER IDENTIFIER QUANTITY QUALITY SIZE REFERENCE
===============================================================
12 AA254712 34 5 7 ZTA
13 AA245789 3 7 8 XMA
15 AA254712 4 7 5 ZTA
但是现在我的客户给我们发来了一个新的需求,我这两天一直在碰壁才能实现我的客户的需求。
新要求规定,如果两个或多个产品共享相同的标识符,则应将它们打印在一起,而不是所有值,而是其中一些值,如下所示:
ORDER IDENTIFIER QUANTITY QUALITY SIZE REFERENCE
===============================================================
12 AA254712 34 5 7 ZTA
15 4 7 5
13 AA245789 3 7 8 XMA
我已经使用了一个按标识符的 sql 语句分组,对共享相同标识符的结果进行分组,但我还没有意识到如何去做,修剪结果以及如何将结果添加到容器中。我想过使用 StringTokenizer,但 GWT 不允许。
谁能帮帮我?
谢谢,
代码:
基本上是这样的(在其他一些不需要的东西中):
static VerticalLayoutContainer r = new VerticalLayoutContainer();
public static FramedPanel drawData(List<String> resultListRefAgent) {
HtmlLayoutContainer con;
Collections.sort(resultListRefAgent);
for (int ini = 0; ini<=resultListRefAgent.size();ini++) {
con = new HtmlLayoutContainer(new getReferenceData());
(Various Widgets declarations (Label, TextBox)).
JsArrayString temp = null;
(字符串声明)
if (resultListaRefAgente.size()>ini) { temp = split(resultListaRefAgente.get(ini), "::");
(将那些 temp.get(index) 分配给先前定义的字符串声明)。
(.setText 到每个先前定义的具有分配值的小部件)。
con.add(widgetName, new HtmlData(".widgetName"));
r.add(con);
}
split方法代码如下:
public static final native JsArrayString split(String string, String separator) /*-{
return string.split(separator);
}-*/;
【问题讨论】: