2012-03-27 7 views
0

GridHtml(または他の点ではWidget実装)にバインドするためにGXTのバインディングメカニズムを使用することは可能ですか?私の目的はTemplateは、そのテンプレートのためのモデルを送るグリッドのSelectionChangedEvent秒で駆動ウィジェット内側の要素を更新することですしながら、グリッドからHTMLテンプレートへのバインディングの使い方は?

それは、それはフォーム(FormBinding)にのみ適用だthe examplesからと思われます。

答えて

0

直接グリッドと汎用コンポーネントをバインドすると、GXTの現在のバージョンでは明らかにできません、とにかくこれは回避策として提供代替ソリューションです:

私はちょうどあなたの要件をサポートするための例Grid BindingTemplatesを利用しました。ここで修正されたコード

@Override 
protected void onRender(Element parent, int index) { 
    super.onRender(parent, index); 
    setStyleAttribute("margin", "10px"); 

    ContentPanel cp = new ContentPanel(); 

    cp.setHeading("Form Bindings"); 
    cp.setFrame(true); 
    cp.setSize(800, 400); 
    cp.setLayout(new RowLayout(Orientation.HORIZONTAL)); 

    final LayoutContainer panel = new LayoutContainer(new FlowLayout()); 

    Grid<Stock> grid = createGrid(); 
    grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); 

    final Template template = new Template(getTemplate()); 
    grid.getSelectionModel().addListener(Events.SelectionChange, new Listener<SelectionChangedEvent<Stock>>() { 
     public void handleEvent(SelectionChangedEvent<Stock> be) { 
      if (be.getSelection().size() > 0) { 
       template.overwrite(panel.getElement(), Util.getJsObject(be.getSelectedItem())); 
      } else { 
       panel.removeAll(); 
      } 
     } 
    }); 
    cp.add(grid, new RowData(.6, 1)); 
    cp.add(panel, new RowData(.4, 1)); 

    add(cp); 
} 

private native String getTemplate() /*-{ 
    var html = [ '<p>Name: {name}</p>', '<p>Symbol: {symbol}</p>', 
      '<p>Last: {last}</p>', '<p>Last Updated: {date}</p>', ]; 
    return html.join(""); 
}-*/; 

Grid Binding例にこれらの修飾を追加です。お役に立てれば。

おかげで、 ガネーシュ

+0

そう私は、このソリューションのラインに沿って考えていたが、私は、コンポーネントのすべての種類で動作するようにGXTでの一般的な結合メカニズムを期待していました。私はその間にこの方向を中止しましたが、それはこの問題のもっともらしい解決策のようです。これを答えとして受け入れ、あなたの時間と努力に感謝します。 –

+0

note私はあなたの答えを編集しました。それは私の質問に関しては解決策ではありませんが、バインディングメカニズムを使用する代わりに選択イベントを発生させるという回避策です。 –