diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java
index b81e3ebfe26eb48d469c1ca2f5b54cc1385a5480..d967ba63764b105aa9ef3be4af767b5271bbe31f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java
@@ -151,7 +151,7 @@ public class TypedTableModelBuilder<T extends IsSerializable>
      */
     public IColumnMetaData addColumn(String id)
     {
-        Column column = createColumn(null, id);
+        Column column = createColumn(null, null, id);
         String id1 = column.getHeader().getId();
         Column oldColumn = columns.put(id1, column);
         if (oldColumn != null)
@@ -187,7 +187,7 @@ public class TypedTableModelBuilder<T extends IsSerializable>
     public void addStringValueToColumn(String title, String id, String valueOrNull)
     {
         StringTableCell value = valueOrNull == null ? EMPTY_CELL : new StringTableCell(valueOrNull);
-        addValueToColumn(title, id, value);
+        addValueToColumn(title, DataTypeCode.VARCHAR, id, value);
     }
     
     /**
@@ -208,7 +208,7 @@ public class TypedTableModelBuilder<T extends IsSerializable>
     {
         ISerializableComparable value =
                 valueOrNull == null ? EMPTY_CELL : new IntegerTableCell(valueOrNull);
-        addValueToColumn(title, id, value);
+        addValueToColumn(title, DataTypeCode.INTEGER, id, value);
     }
     
     /**
@@ -229,7 +229,7 @@ public class TypedTableModelBuilder<T extends IsSerializable>
     {
         ISerializableComparable value =
                 valueOrNull == null ? EMPTY_CELL : new DoubleTableCell(valueOrNull);
-        addValueToColumn(title, id, value);
+        addValueToColumn(title, DataTypeCode.REAL, id, value);
     }
 
     /**
@@ -237,26 +237,34 @@ public class TypedTableModelBuilder<T extends IsSerializable>
      * does not exist.
      * 
      * @param titleOrNull Title of the column. Will be ignored if the column already exists.
+     * @param dataTypeOrNull Data type of the column. Will be ignored if trhe column already exists.
      */
-    public void addValueToColumn(String titleOrNull, String id, ISerializableComparable value)
+    public void addValueToColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id,
+            ISerializableComparable value)
     {
-        getOrCreateColumn(titleOrNull, id).insertValueAt(rowObjects.size() - 1, value);
+        getOrCreateColumn(titleOrNull, dataTypeOrNull, id).insertValueAt(rowObjects.size() - 1,
+                value);
     }
     
-    private Column getOrCreateColumn(String titleOrNull, String id)
+    private Column getOrCreateColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id)
     {
         Column column = columns.get(id);
         if (column == null)
         {
-            column = createColumn(titleOrNull, id);
+            column = createColumn(titleOrNull, dataTypeOrNull, id);
             columns.put(id, column);
         }
         return column;
     }
     
-    private Column createColumn(String titleOrNull, String id)
+    private Column createColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id)
     {
-        return new Column(createHeader(titleOrNull, id));
+        TableModelColumnHeader header = createHeader(titleOrNull, id);
+        if (dataTypeOrNull != null)
+        {
+            header.setDataType(dataTypeOrNull);
+        }
+        return new Column(header);
     }
 
     private TableModelColumnHeader createHeader(String titleOrNull, String id)
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java
index 0e5f9254c910a9ce560fae2c71b8ff2d975878bb..e69790360a1016682b7ac5cb71c2194e18ff63af 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java
@@ -87,7 +87,7 @@ public class TypedTableModelBuilderTest extends AssertJUnit
         List<TableModelColumnHeader> headers = model.getHeader();
         assertHeadersOrder(headers, "A");
         assertEquals("Alpha", headers.get(0).getTitle());
-        assertEquals(null, headers.get(0).getDataType());
+        assertEquals(DataTypeCode.INTEGER, headers.get(0).getDataType());
         List<TableModelRowWithObject<IsSerializable>> rows = model.getRows();
         assertSame(object0, rows.get(0).getObjectOrNull());
         assertEquals(new IntegerTableCell(42), rows.get(0).getValues().get(0));
@@ -98,6 +98,34 @@ public class TypedTableModelBuilderTest extends AssertJUnit
         assertEquals(3, rows.size());
     }
     
+    @Test
+    public void testAddDoubleValueToColumn()
+    {
+        TypedTableModelBuilder<IsSerializable> builder = new TypedTableModelBuilder<IsSerializable>();
+        MockSerializable object0 = new MockSerializable();
+        builder.addRow(object0);
+        builder.addDoubleValueToColumn("Alpha", "A", 4.25);
+        MockSerializable object1 = new MockSerializable();
+        builder.addRow(object1);
+        builder.addDoubleValueToColumn("A", null);
+        builder.addRow(null);
+        builder.addDoubleValueToColumn("a", "A", 4711.5);
+        
+        TypedTableModel<IsSerializable> model = builder.getModel();
+        List<TableModelColumnHeader> headers = model.getHeader();
+        assertHeadersOrder(headers, "A");
+        assertEquals("Alpha", headers.get(0).getTitle());
+        assertEquals(DataTypeCode.REAL, headers.get(0).getDataType());
+        List<TableModelRowWithObject<IsSerializable>> rows = model.getRows();
+        assertSame(object0, rows.get(0).getObjectOrNull());
+        assertEquals(new DoubleTableCell(4.25), rows.get(0).getValues().get(0));
+        assertSame(object1, rows.get(1).getObjectOrNull());
+        assertEquals(new StringTableCell(""), rows.get(1).getValues().get(0));
+        assertSame(null, rows.get(2).getObjectOrNull());
+        assertEquals(new DoubleTableCell(4711.5), rows.get(2).getValues().get(0));
+        assertEquals(3, rows.size());
+    }
+    
     @Test
     public void testRowsWithEmptyCells()
     {