diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
index 4bbdc03cebd816ec88658b5a9cca9bb0eb1126ec..b62cb8c59a73ce743d6bfbf3e9aaf26705eb257e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
@@ -55,12 +55,11 @@ public class MaterialBrowserToolbar extends ToolBar implements
     private final IViewContext<ICommonClientServiceAsync> viewContext;
 
     public MaterialBrowserToolbar(final IViewContext<ICommonClientServiceAsync> viewContext,
-            MaterialType initValueOrNull)
+            String displayTypeIdOrNull)
     {
         this.viewContext = viewContext;
         this.selectMaterialTypeCombo =
-                MaterialTypeSelectionWidget
-                        .createWithInitialValue(viewContext, initValueOrNull, ID);
+                MaterialTypeSelectionWidget.create(viewContext, displayTypeIdOrNull, ID);
         display();
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
index 03a2a57a058131be0e0107c29a82f6e4ed9fde57..5151835f0078e39f7903d78cc9ba9ff22f455e9f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
@@ -21,12 +21,16 @@ import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModifica
 
 import java.util.List;
 
+import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
+import com.extjs.gxt.ui.client.event.SelectionChangedListener;
+import com.extjs.gxt.ui.client.widget.MessageBox;
 import com.extjs.gxt.ui.client.widget.form.ComboBox;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplaySettingsManager;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MaterialTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
@@ -49,6 +53,8 @@ public final class MaterialTypeSelectionWidget extends
 
     private final String additionalOptionLabelOrNull;
 
+    private final String initialCodeOrNull;
+
     /**
      * Creates a material type chooser with one additional option. It's useful when you want to have
      * one special value on the list.
@@ -57,37 +63,57 @@ public final class MaterialTypeSelectionWidget extends
             final IViewContext<ICommonClientServiceAsync> viewContext,
             final String additionalOptionLabel, final String idSuffix)
     {
-        return new MaterialTypeSelectionWidget(viewContext, additionalOptionLabel, idSuffix);
+        return new MaterialTypeSelectionWidget(viewContext, additionalOptionLabel, idSuffix, null);
     }
 
-    public static MaterialTypeSelectionWidget createWithInitialValue(
+    public static MaterialTypeSelectionWidget create(
             final IViewContext<ICommonClientServiceAsync> viewContext,
-            final MaterialType initValueOrNull, final String idSuffix)
+            final String displayTypeIdOrNull, final String idSuffix)
     {
-        MaterialTypeSelectionWidget chooser =
-                new MaterialTypeSelectionWidget(viewContext, null, idSuffix);
-        if (initValueOrNull != null)
-        {
-            chooser.setValue(new MaterialTypeModel(initValueOrNull));
-        }
-        return chooser;
+        return new MaterialTypeSelectionWidget(viewContext, null, idSuffix, displayTypeIdOrNull);
     }
 
     public MaterialTypeSelectionWidget(final IViewContext<ICommonClientServiceAsync> viewContext,
             final String idSuffix)
     {
-        this(viewContext, null, idSuffix);
+        this(viewContext, null, idSuffix, null);
     }
 
     private MaterialTypeSelectionWidget(IViewContext<ICommonClientServiceAsync> viewContext,
-            String additionalOptionLabelOrNull, String idSuffix)
+            String additionalOptionLabelOrNull, String idSuffix, final String displayTypeIdOrNull)
     {
         super(viewContext, SUFFIX + idSuffix, Dict.MATERIAL_TYPE, ModelDataPropertyNames.CODE,
                 "material type", "material types");
         this.viewContext = viewContext;
         this.additionalOptionLabelOrNull = additionalOptionLabelOrNull;
+        this.initialCodeOrNull =
+                tryGetInitialValue(displayTypeIdOrNull, viewContext.getDisplaySettingsManager());
         setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE,
                 ModelDataPropertyNames.TOOLTIP));
+        if (displayTypeIdOrNull != null)
+        {
+            final DisplaySettingsManager displaySettingsManager =
+                    viewContext.getDisplaySettingsManager();
+            addSelectionChangedListener(new SelectionChangedListener<MaterialTypeModel>()
+                {
+                    @Override
+                    public void selectionChanged(SelectionChangedEvent<MaterialTypeModel> se)
+                    {
+                        saveSelectedValueAsDisplaySetting(displaySettingsManager,
+                                displayTypeIdOrNull);
+                    }
+                });
+        }
+    }
+
+    private void saveSelectedValueAsDisplaySetting(
+            final DisplaySettingsManager displaySettingsManager, final String dropDownId)
+    {
+        MaterialType selectedOrNull = tryGetSelected();
+        if (selectedOrNull != null)
+        {
+            displaySettingsManager.storeDropDownSettings(dropDownId, selectedOrNull.getCode());
+        }
     }
 
     /**
@@ -128,7 +154,9 @@ public final class MaterialTypeSelectionWidget extends
     @Override
     protected void loadData(AbstractAsyncCallback<List<MaterialType>> callback)
     {
-        viewContext.getService().listMaterialTypes(callback);
+        viewContext.getService().listMaterialTypes(new ListMaterialTypesCallback(viewContext));
+        callback.ignore();
+
     }
 
     public DatabaseModificationKind[] getRelevantModifications()
@@ -138,4 +166,56 @@ public final class MaterialTypeSelectionWidget extends
                     createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT),
                     edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
     }
+
+    // 
+    // initial value support
+    //
+
+    private void selectInitialValue()
+    {
+        if (initialCodeOrNull != null)
+        {
+            trySelectByCode(initialCodeOrNull);
+            updateOriginalValue();
+        }
+    }
+
+    private void trySelectByCode(String code)
+    {
+        try
+        {
+            GWTUtils.setSelectedItem(this, ModelDataPropertyNames.CODE, code);
+        } catch (IllegalArgumentException ex)
+        {
+            MessageBox.alert("Error", "Material Type '" + code + "' doesn't exist.", null);
+        }
+    }
+
+    private class ListMaterialTypesCallback extends MaterialTypeSelectionWidget.ListItemsCallback
+    {
+
+        protected ListMaterialTypesCallback(IViewContext<?> viewContext)
+        {
+            super(viewContext);
+        }
+
+        @Override
+        public void process(List<MaterialType> result)
+        {
+            super.process(result);
+            selectInitialValue();
+        }
+    }
+
+    private static String tryGetInitialValue(final String displayTypeIdOrNull,
+            DisplaySettingsManager displaySettingsManager)
+    {
+        if (displayTypeIdOrNull != null)
+        {
+            return displaySettingsManager.getDropDownSettings(displayTypeIdOrNull);
+        } else
+        {
+            return null;
+        }
+    }
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
index 603f21e5b109b62f786f80e7adafe5f8e73809bb..9d2f4053d6019a641208bb66dca40780fae9a86d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
@@ -47,7 +47,8 @@ public class ExperimentWellMaterialBrowserGrid extends MaterialBrowserGrid
             final IEntityInformationHolderWithIdentifier experiment)
     {
         final MaterialBrowserToolbar toolbar =
-                new MaterialBrowserToolbar(screeningViewContext.getCommonViewContext(), null);
+                new MaterialBrowserToolbar(screeningViewContext.getCommonViewContext(),
+                        "experiment-well-material-browser-toolbar");
         final ICriteriaProvider<ListMaterialDisplayCriteria> criteriaProvider = toolbar;
         final ExperimentWellMaterialBrowserGrid browserGrid =
                 createBrowserGrid(screeningViewContext, criteriaProvider, experiment);