5

プロジェクトで CustomLayout を使用して、UI オブジェクトとそのスタイルを分離しています。

テーブルに問題があります。

div を定義し、テーブルの高さを div の高さに設定します。

最良の方法はどれですか?

私は考えました:

table.setsizeFull() ;
table.setPageLength(0);

コードで、しかし結果は私が望むものではありません。内部に要素がある場合とない場合の両方で、テーブルを div のサイズでフルサイズにしたい。

何か提案はありますか?

4

1 に答える 1

10

私は同様の問題を解決していました。行を追加するにつれてテーブルを大きくしたかったのです。データのすべての行が表示されている限り、正確な高さは気にせず、行を追加するにつれて大きくなりました。また、テーブルの下部に常に余分なスペースが表示されるようにしたかったのです。

ここでの中心的な考え方は、私が3つのことをしたということです。

  • setHeight()テーブルを呼び出さないでください。
  • 以前setPageLength()は、テーブルの高さを行ごとに定義していました。つまり、テーブルの高さを何行にするかによって定義していました。
  • requestRepaint()サイズを変更した要素を呼び出しました。列要素のサイズを変更した場合は、それを列要素で呼び出しました。テーブルのサイズを変更した場合は、テーブル上でそれを呼び出しました。

これは、私がこの問題をどのように解決したかを示す一般化されたコードサンプルです。私のコードは完全ではありませんが、始めるのに役立つかもしれません。

public class MyClass extends Table {

    public MyClass(...)
    {
        this.setWidth("100%"); // fill parent <td>'s width, allows draggable sizing.
        // note: do NOT setHeight().

        setupColumns(); // details not shown here
        setupBehavior(); // details not shown (listeners, etc)
        addDataToTable(); // details not shown

        adjustHeight();
    }

    // I also have a function to add rows to the table when 
        // a button is clicked.  That function calls adjustHeight() (shown below).

    public void adjustHeight()
    {
        this.setPageLength(this.getItemIds().size() + 1);
        this.requestRepaint();
    }
}

setColumnExpandRatio()[編集/フォローアップ]この方法を使用すると、 (動的列幅)を使用している場合、テーブルに不要なスクロールバーがレンダリングされる傾向があることがわかりました。したがって、ヘッズアップと同様に、setColumnWidth()上記のトリックを使用する場合は、固定幅の列()を使用する必要があります。

于 2012-12-04T21:18:27.657 に答える