如何更改TreeGrid PropertyColumn上的style属性?

时间:2013-09-13 10:18:00

标签: java wicket treegrid

我想在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上进行验证的方法,以及如何在单个单元格的基础上指出错误,我会对您的想法非常感兴趣。

感谢。

1 个答案:

答案 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;
          }
      }
};