我想在com.inmethod.grid.column.PropertyColumn
内设置com.inmethod.grid.TreeGrid
的样式属性。列的创建如下:
private PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, ConfigParamTreeNode> createCurrentValueColumn() {
PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, ConfigParamTreeNode> col = new PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, ConfigParamTreeNode>(
new Model<String>("Value"), "userObject.currentValue") {
private static final long serialVersionUID = 3525654933636874042L;
@SuppressWarnings("rawtypes")
@Override
public boolean cellClicked(IModel rowModel) {
ConfigParamTreeNodeModel treeNodeModel = (ConfigParamTreeNodeModel) (((DefaultMutableTreeNode) rowModel
.getObject()).getUserObject());
treeNodeModel.getNodeLabel();
AjaxRequestTarget target = AjaxRequestTarget.get();
confirm.open(target);
}
return true;
}
};
col.setResizable(true);
return col;
}
当用户单击单元格时,会显示一个弹出对话框。
取消对话后,我想对值进行一些验证,并指出单元格上的任何错误。所以我的想法是在它周围设置一个红色边框。但我的问题是,如何获取与单元格关联的<div>
元素,以设置样式属性?
这可以在PropertyTreeColumn
上完成,因为它提供了newNodeComponent
,您可以在其中访问Component对象来设置样式。
但是如何在PropertyColumn
?
或者,如果有人可以推荐在TreeGrid上进行验证的方法,以及如何在单个单元格的基础上指出错误,我会对您的想法非常感兴趣。
感谢。
答案 0 :(得分:0)
您可以尝试覆盖PropertyColumn方法getCellCssClass(),类似:
PropertyColumn column = new PropertyColumn( columnId,new Model<String>( columnName ),
somePropertyExpression,
sortProperty ) {
@SuppressWarnings("rawtypes")
@Override
public String getCellCssClass( IModel rowModel,
int rowNum ) {
if( getId().equals( "testid" ) ) {
return "testCell";
} else if( getId().equals( "blablaId" ) ) {
return "blablaCell";
} else {
return null;
}
}
};