2011-08-03 39 views
0

我正在使用gwt 2.3.I在此使用UI绑定。我想通过使用UIBinder在此创建网格。为此我写了这段代码。如何动态使用UIBinder?

<g:Grid ui:field='mygrid' addStyleNames='{style.panel}' 
      cellSpacing='10'> 
      <g:row> 
       <g:customCell> 
        <g:Label text="11" styleName="{style.label}" /> 
       </g:customCell> 
       <g:customCell> 
        <g:Label text="22" styleName="{style.label}" /> 
       </g:customCell> 
      </g:row> 
      <g:row> 
       <g:customCell> 
        <g:Label text="33" styleName="{style.label}" /> 
       </g:customCell> 
       <g:customCell> 
        <g:Label text="44" styleName="{style.label}" /> 
       </g:customCell> 
      </g:row> 
     </g:Grid> 

现在,这里我网的数据static.Now在情况下,如果根据这些数据我想创建一个使用UiBinder的网格我的数据来自服务器端&。这怎么可能?

另一种情况。有形式。其中来自数据库的数量来自数据库。 那么UIBider如何支持创建这种形式。因为每次控制的数量可能会有所不同

所以我想知道是否有可能使用UIBinder来创建用户界面,具体取决于运行时数据。

任何建议或例子表示赞赏。

回答

1

UiBinder被“交叉编译”为JavaScript和HTML代码。一旦完成,你不能修改它。现在有办法做一些事情,比如将XML语法发送给客户端,然后创建一个网格。

但是,您可能会在“后面的代码”中添加新的行。

关于第二个问题:我不知道你的意思:P

+0

“但是,您可能会在”后面的代码“中添加新的行。”这意味着首先根据数据定义ui.xml中的网格和gwt(.java)类中的行数? –

+0

是的。我知道这不是最好的解决方案,但我仍然会使用UiBinder。添加样式和新窗口小部件(例如“标题标签”)可以让您的“表格设计”更轻松。 – Stefan

1

是的,你可以从Java添加数据到UiBinder的。在Eclipse中创建UIBinder时,它还为此XML创建了.java文件。编辑此对应的Java文件,并添加这样的:

public class MyGridSample extends Composite { 
    // uiBinder interface declaration... 
    private static MyGridSampleUiBinderUiBinder uiBinder = GWT.create(MyGridSampleUiBinder.class); 

    interface MyGridSampleUiBinder extends UiBinder<Widget, MyGridSample > { 
    } 

    // annotation to get ui-field into code 
    @UiField 
    Grid mygrid; 

    public MyGridSample() { 
     setWidget(uiBinder.createAndBindUi(this)); 
     // sets cell 0,0 with label 
     mygrid.setWidget(0, 0, new Label("cell 0")); 
    } 
} 

GWT是客户端框架和UiBinder的是预编译的JavaScript文件 - 他们是担任静态文件。您应该进行Web服务调用以将数据导入此模板。