GWT Bootstrap3为DataGrid创建自定义单元

问题描述

我正在努力获取bootstrap3格式的自定义单元以在数据网格中工作。 我无法格式化和获取事件。 在这种情况下,我能够在表中获取正确的“ Bootstrap 3输入单元格”,并具有良好的bootstrap3外观,但是我无法获取事件,并且cssBuilder代码也无法正常工作。

Column<TableData,SafeHtml> col1 = new Column<TableData,SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(TableData object) {               
               SafeStylesBuilder cssBuilder = new SafeStylesBuilder();              
               SafeHtmlBuilder sb = new SafeHtmlBuilder();  
               cssBuilder.appendTrustedString("margin-top: 5px;");
               Input i1= new input();
               
               sb.append(SafeHtmlUtils.fromTrustedString(i1.toString()));                           
               return templates.cell(cssBuilder.toSafeStyles(),sb.toSafeHtml());
            }               
        };

当我尝试了许多不同的变体(并失败了)时,我迫切希望获得真正的应用程序代码

解决方法

最后,我使用了引导网格系统来构成自定义网格

/**
 * Addiere eine Zeile zum Panel dazu
 * @param column
 */
void addToPanel(Column [] column,int iIndex) {
    Row row=new Row();          
    int iIt;
    for (iIt=0;iIt<column.length;iIt++) {
        row.add(column[iIt]);
    }
    panelbody.insert(row,iIndex);   
}

在每个列元素中,您可以放入诸如Text,Input,CheckBox,ListBox等的典型元素中。您可以覆盖这些元素,以链接到基础数据资源..

    class MInput extends Input implements SetGet{
    RowData rData;
    int iColumn;
    MInput mI;
    
    public MInput (int iColumn,RowData rData) {
        super();
        mI=this;
        this.rData=rData;
        this.iColumn=iColumn;
        this.addBlurHandler(
            new BlurHandler () {
                @Override
                public void onBlur(BlurEvent event) {
                    // TODO Auto-generated method stub
                    rData.saData[iColumn]=mI.getText();                     
                }               
        });
        this.addKeyPressHandler(new KeyPressHandler() {
            @Override
            public void onKeyPress(KeyPressEvent event) {   
                if ( event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER ) {
                    mI.setFocus(false);
                }                   
            }               
        });
    }
    
    public String get() {           
        return rData.saData[iColumn];
    }
    
    public void set(String strSet) {
        this.setText(strSet);
        rData.saData[iColumn]=strSet;
    }
}

SetGet是一个类,用于对每个columndata元素进行常规访问。