diff --git a/includes/nodereference_explorer.menu.inc b/includes/nodereference_explorer.menu.inc
index 0e829b7..2c5f239 100644
--- a/includes/nodereference_explorer.menu.inc
+++ b/includes/nodereference_explorer.menu.inc
@@ -155,7 +155,8 @@ function nodereference_explorer_get_overlay_content($field, $title = '') {
   $handler = new nodereference_explorer_views($field);
   $handler->set_selection($title);
   $filters = array();
-  foreach ($handler->get_all_displays() as $display) {
+  $dialog_displays = count($dialog['displays']) ? array_intersect_key($handler->get_all_displays(), $dialog['displays']) : $handler->get_all_displays();
+  foreach ($dialog_displays as $display) {
   	//Render tabs links manually, as their behavior will be defined by jQuery tabs on the client side.
   	//Usage of the l() functions leads to problems as HTTP requests are triggered, e. g.
   	//$tabs[$display->id] = l($display->display_title, $_GET['q'], array('fragment' => $display->id));
diff --git a/includes/nodereference_explorer.widget.settings.inc b/includes/nodereference_explorer.widget.settings.inc
index 3e7fb97..7bee780 100644
--- a/includes/nodereference_explorer.widget.settings.inc
+++ b/includes/nodereference_explorer.widget.settings.inc
@@ -61,6 +61,8 @@ function nodereference_explorer_widget_settings_form($widget) {
         'path' => url(NODE_REFERENCE_EXPLORER_MENU_CALLBACK_PREVIEW_DISPLAYS),
         'widget' => 'edit-' . form_clean_id('content_preview'),
         'value' => isset($widget['content_preview']) ? $widget['content_preview'] : 'preview',
+        'widget_dialog' => 'edit-' . form_clean_id('dialog_displays'),
+        'value_dialog' => isset($widget['dialog_displays']) ? array_keys($widget['dialog_displays']) : array(),
       ),
     );
     drupal_add_js($setting, 'setting'); //js settings
@@ -129,6 +131,20 @@ function nodereference_explorer_widget_settings_form($widget) {
       '#description' => t('The label in the title bar.'),
     );
 
+    $form['dialog']['dialog_displays'] = array(
+      '#type' => 'select',
+      '#options' => array(),
+      '#multiple' => TRUE,
+      '#title' => t('Dialog displays'),
+      '#default_value' => isset($widget['dialog_displays']) ? $widget['dialog_displays'] : array(),
+      '#description' => t('Unselect all options to present all displays.'),
+      '#element_validate' => array(),
+      //Avoid a form error message on validation, by skipping this element, i. e. set to already validated.
+      //Options are updated via JSON on the JavaScript side, so we do not know the allowed
+      //values yet. Users may choose a preview display according to "View used to select the nodes" selection.
+      '#validated' => TRUE,
+    );
+
     $form['dialog']['dialog_width@int'] = array(
       '#type' => 'textfield',
       '#title' => t('Width'),
@@ -377,6 +393,7 @@ function nodereference_explorer_widget_settings_save($widget) {
         'create_ref',
         'content_preview',
         'content_preview_position',
+        'dialog_displays',
         'dialog_title',
         'theme_css',
         'dialog_api',
diff --git a/js/explorer.settings.js b/js/explorer.settings.js
index a6b729c..c96e937 100644
--- a/js/explorer.settings.js
+++ b/js/explorer.settings.js
@@ -1,7 +1,7 @@
 // $Id: explorer.settings.js,v 1.3 2010/03/15 17:17:08 gnindl Exp $
 
 /**
- * The preview displays depend on the selected view. The list is updated
+ * The preview and dialog displays depend on the selected view. The list is updated
  * when the referenced view is changed. This action applies to the settings form.
  * @param
  *   DOM context
@@ -15,16 +15,23 @@ Drupal.behaviors.NodereferenceExplorerSettings = function (context) {
 	var path = settings['path'];
 	var view_name = $(this).val();
 	var widget = settings['widget'];
+  var widget_dialog = settings['widget_dialog'];
 	
     $.getJSON(path, {view: view_name}, function(data, textStatus) {
       $('#' + widget).children().remove();
+      $('#' + widget_dialog).children().remove();
       var displays = data.data;
       for (var id in displays) {
         var option = '<option value="' +id +'">' + displays[id] +'</option>';
         $('#' + widget).append(option);
+        if (id != '--') {
+          $('#' + widget_dialog).append(option);
+        }
       }
       var value = settings['value'];
+      var value_dialog = settings['value_dialog'];
       $('#' + widget).val(value);
+      $('#' + widget_dialog).val(value_dialog);
     });
   });
   if ($('#edit-advanced-view:not(.nodereference-explorer-processed)', context))
