2011-11-10 4 views
3

HTMLテーブルには、このような方法はありません。getcellを(行、列)

Cell c = getCell(row,col); 

は、行と列の与えられた、HTML/Flexの表のセルを得るための最も効果的な方法は何ですか?

+0

が応答する前にいることを尋ねたが、決してよりよい遅くている必要があります:あなたは 'com.google.gwtについて話しています.user.client.ui.HTMLTable.Cell'' com.google.gwt.cell.client.Cell '? – MarioP

答えて

1

HTMLTableは、次のメソッドがあります。

  • HTMLTable#isCellPresent(int row, int column)
  • HTMLTable#getWidget(int row, int column)

あなたはこのようにそれらの両方を使用してユーティリティメソッドを書くことができます:

public static Cell<?> getCell(HTMLTable table, int row, int column) { 
    if (table != null && table.isCellPresent(row, column)) { 
     Widget widget = table.getWidget(row, column); 
     if (widget instanceof Cell) { 
      return (Cell<?>) widget; 
     } 
    } 
    return null; 
} 
+0

CellはウィジェットではなくTDへのインターフェイスなので、これは機能しません。例えばTextInputCellは、Cellの実装です。私のHTMLTableにウィジェットはありません。 –

+0

例がありますか? HTMLTable.Cellを使用している場合、それは 'HTMLTable#getCellForEvent'のみを対象とし、' HTMLTable'の 'add(...)'ウィジェットのすべてが 'IsWidget'をパラメータとして取りますか? 'HTMLTable.Cell'を使用している場合は、コンストラクタを公開し、それをいくつかのキャストと組み合わせて(例えば' TableElement table = TableElement.as(htmlTable.getElement() ')、それを繰り返してセルを作り直す必要があります –

2

は何に依存しますあなたがしたい。

あなたは、セルの内容を読み出し/書き込みする場合は、セルの内容がウィジェットであれば、HTMLTable#setText(int,int)HTMLTable#getText(int,int)、またはHTMLTable#setWidget(int,int)HTMLTable#getWidget(int,int)を使用する場合があります。

/書き込みHtmlTable.CellFormatterにおける細胞の特性(link to gwt javadoc)およびそのサブクラスを読むためのより多くの機能があります - あなたはHTMLTable#getCellFormatter()を使用してそれを取得し、多分それをキャストすることができ、使用しているHTMLTableの実装に依存します。スタイル、属性を設定/削除したり、さらに基底のElementlink to gwt javadoc)を得ることができます。

+1

私はCellに代わるものを求めていません。この議論を超えて、Cellを得る理由があります。 –

0

マウスオーバーイベントを登録するためのコードは次のとおりです。カーソルを置いたセルの値をツールチップに表示します。あなたは、クリックのリスナーを変更し、イベントのために同じstuff.Myコードを取得することができます:

Ext.QuickTips.init(); 
    grid_plancode.on('mouseover', mouseOver); 


function mouseOver(e, tar){ 
    var t = e.getTarget(); 
    var overCell = grid_plancode.getView().findCellIndex(t); 
    var overRow = grid_plancode.getView().findRowIndex(t); 
var selectedText=grid_plancode.getView().getCell(overRow, overCell); 
      if(overCell !== false && overRow !== false) { 
Ext.QuickTips.register({target:tar,title:'Value', text:selectedText. innerText }); 
}