TableElement、TableRowElement、およびTableCellElementから10x10テーブルを作成する

私は、大規模アプリケーション開発とMVP - パートII チュートリアルでは、最後の選択(最適化されたUI - ダムビュー)では、要素ごとに要素を作成するのではなく、HTML要素を使用してTableElementでテーブルを作成し、 TableRowElementおよびTableCellElement。

だから私はその例に基づいてコードを作ったが、それはちょうどお互いの下に異なるHTML要素を書く。私のコードはそれが何をすべきかを良く説明していると思います。

public void onModuleLoad() {
    HTML html = new HTML();
    html.setHTML(createTable());
    RootPanel.get().add(html);
}

public String createTable() {
    //create table
    TableElement table = Document.get().createTableElement();
    //create tbody
    TableSectionElement tbody = Document.get().createTBodyElement();
    table.appendChild(tbody);

    //Create 10 dummy rows
    for (int i = 0; i < 10; ++i) {
        //insert at -1, which is per definition the last posiion
        TableRowElement row = tbody.insertRow(-1);
        //create 10 dummy columns
        for (int j = 0; j < 10; ++j) {
            //insert at -1, which is per definition the last posiion
            TableCellElement cell = row.insertCell(-1);
            //set a dummy text
            String s = (Integer.toString(i) + " : "
                    + Integer.toString(j));
            cell.setInnerHTML(s);
        }
    }

    return table.getInnerHTML();
}

任意のアイデアがなぜ10x10テーブルを作成していないのですか?

0

2 答え

まず、そのコードをSafeHtmlBuilderに置き換えることをお勧めします.SafeHtmlBuilderは、さらに高速に(DOM操作は一切)行う必要があります。

次に、あなたの問題では、ダミーのコンテナ(例えば、DivElement)内にテーブルをラップし、そのコンテナでgetInnerHTML()を使用する必要があります。

1
追加された

Well simple mistake... I was returning table.getInnerHTML(); which return the part starting at <tbody> and ending with . Changing it to table.toString(); fixed it!

0
追加された
いいえ、要素のtoString()は(IEで呼び出されるように)「outerHTML」を返すことは保証されません。私の答えを見てください。
追加された 著者 Thomas Broyer,