【问题标题】:List<String> custom gwt data displayList<String> 自定义gwt数据展示
【发布时间】: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);
}-*/;

【问题讨论】:

    标签: java sql gwt


    【解决方案1】:

    在您的 SQL 中,只需使用 order by 对您的数据进行排序,然后当您添加到 HtmlLayoutContainer 时,跟踪前一行的标识符并放置空标识符和引用(如果它们相同)。

    【讨论】:

    • 如何跟踪标识符?我的主要问题是无法跟踪行标识符。
    • 在你的循环中,在 r.add(con) 之后添加 previousIdentifier=temp.get( whateveridentifier it is) 以及当你添加实际数据测试时 if (temp.get( whateveridentifier it is) == previousIdentifier ) con.add(widgetName, new HtmlData(".emptyWidget")); else con.add(widgetName, new HtmlData(".widgetName"));
    【解决方案2】:

    您正在使用 GXT。您是否尝试过使用分组网格?

    Grouping Grid

    【讨论】:

    • 分组网格的功能很好,但我的客户需要一个习惯布局,而不是像分组网格显示的示意图那样。
    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2014-04-08
    • 2020-10-18
    • 2013-10-14
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多