diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index 5ab3c5065570a6589d59f3613db914b84c84799b..7e2c6acfa19ac4d1ad05badac3763e904512429b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -1186,7 +1186,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
             {
                 public void postRefresh(boolean wasSuccessful)
                 {
-                    if (customColumnsMetadataProvider.getUnsettingHasChanged())
+                    if (customColumnsMetadataProvider.getHasChangedAndSetFalse())
                     {
                         recreateColumnModelAndRefreshColumnsWithFilters();
                     }
@@ -1275,11 +1275,12 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
                                         .setCustomColumnsMetadata(newCustomColumns);
                             }
                             boolean customColumnsChanged =
-                                    customColumnsMetadataProvider.getUnsettingHasChanged();
+                                    customColumnsMetadataProvider.getHasChangedAndSetFalse();
                             if (customColumnsChanged)
                             {
                                 recreateColumnModelAndRefreshColumnsWithFilters();
                             }
+
                             boolean columnFiltersChanged =
                                     rebuildFiltersFromIds(getFilteredColumnIds(newColumnDataModels));
                             saveColumnDisplaySettings();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java
index 701896dbf8a794a59ba63294b4671ee2abd4687f..08d37cb175ea43e205c9980e47be4966538c0fc7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java
@@ -34,7 +34,7 @@ class CustomColumnsMetadataProvider
     private boolean hasChanged;
 
     /** true if the value has changed. Subsequent calls will return false. */
-    public boolean getUnsettingHasChanged()
+    public boolean getHasChangedAndSetFalse()
     {
         boolean result = hasChanged;
         this.hasChanged = false;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridCustomColumnInfo.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridCustomColumnInfo.java
index 714fd3635812050f458e6443173dd78f6cff3282..45c946b7de39567f95dcc72194ff1eab00c2fd7d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridCustomColumnInfo.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridCustomColumnInfo.java
@@ -21,7 +21,7 @@ import com.google.gwt.user.client.rpc.IsSerializable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
 
 /**
- * Basic metadata about a grid custom column: code (column identifier), label and description.
+ * Basic metadata about a grid custom column: code (column identifier), label, description and type.
  * 
  * @author Tomasz Pylak
  */
@@ -63,7 +63,7 @@ public class GridCustomColumnInfo implements IsSerializable
     {
         return description;
     }
-    
+
     public DataTypeCode getDataType()
     {
         return dataType;
@@ -77,12 +77,12 @@ public class GridCustomColumnInfo implements IsSerializable
             return false;
         }
         GridCustomColumnInfo that = (GridCustomColumnInfo) obj;
-        return code.equals(that.code) && label.equals(that.label);
+        return code.equals(that.code) && label.equals(that.label) && dataType == that.dataType;
     }
 
     @Override
     public int hashCode()
     {
-        return ((17 * 59) + code.hashCode()) * 59 + label.hashCode(); 
+        return ((17 * 59) + code.hashCode()) * 59 + label.hashCode();
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridRowModels.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridRowModels.java
index 7625450c38ae446de2c039a6d48ea9410c0fd9b6..a976ef5920c482468b0dbbae03597cc47b8925ff 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridRowModels.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/GridRowModels.java
@@ -61,7 +61,7 @@ public class GridRowModels<T> extends ArrayList<GridRowModel<T>> implements IsSe
         this.columnDistinctValues = arrayList;
     }
 
-    /** Used when items are not displayed in a grid (usually we need the values for comboboxes */
+    /** Used when items are not displayed in a grid (usually we need the values for comboboxes) */
     // TODO 2009-10-08, Tomasz Pylak: this method is a source of many anti-patterns where the
     // existance of server cache is simply forgotten and cache is never cleared.
     // Possible solution is to add an