0

我想在 a 中设置 a 的样式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>单元格关联的元素,以设置样式属性?

这可以在 a 上完成,PropertyTreeColumn因为它提供了一个newNodeComponent,您可以在其中访问 Component 对象来设置样式。

但是如何在 a 上做到这一点PropertyColumn

或者,如果有人可以推荐一种在 TreeGrid 上进行验证的方法,以及如何在单个单元格的基础上指示错误,我会对您的想法非常感兴趣。

谢谢。

4

1 回答 1

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;
          }
      }
};
于 2013-09-13T11:01:24.040 回答