问题描述
我正在努力获取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元素进行常规访问。