diff --git a/field_collection_table.module b/field_collection_table.module
index 109d8a3..1c0f098 100644
--- a/field_collection_table.module
+++ b/field_collection_table.module
@@ -200,6 +200,7 @@ function field_collection_table_form_alter(&$form, &$form_state, $form_id) {
       if (isset($form[$field_name]) && $instance['widget']['type'] == 'field_collection_table') {
         $language = $form[$field_name]['#language'];
         $form[$field_name][$language]['#theme'] = 'field_collection_table_multiple_value_fields';
+        $form[$field_name][$language]['#custom_settings'] = $instance['widget']['settings'];
         $form[$field_name][$language]['#pre_render'][] = 'field_collection_table_pre_render_multiple_fields';
       }
     }
@@ -289,6 +290,9 @@ function field_collection_table_field_widget_info() {
     'field_collection_table' => array(
       'label' => t('Table'),
       'field types' => array('field_collection'),
+      'settings' => array(
+        'nodragging' => FALSE,
+      ),
       'behaviors' => array(
         'multiple values' => FIELD_BEHAVIOR_DEFAULT,
         'default value' => FIELD_BEHAVIOR_DEFAULT,
@@ -309,3 +313,22 @@ function field_collection_table_field_widget_form(&$form, &$form_state, $field,
   }
   return $element;
 }
+
+/**
+ * Implements hook_field_widget_settings_form().
+ */
+function field_collection_table_field_widget_settings_form($field, $instance) {
+  $widget = $instance['widget'];
+  $settings = $widget['settings'];
+
+  if ($widget['type'] == 'field_collection_table') {
+    $form['nodragging'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Disable drag and drop'),
+      '#description' => t('If checked, users cannot rearrange the rows.'),
+      '#default_value' => $settings['nodragging'],
+    );
+  }
+
+  return $form;
+}
\ No newline at end of file
diff --git a/theme/theme.inc b/theme/theme.inc
index fe09df3..88f14b7 100644
--- a/theme/theme.inc
+++ b/theme/theme.inc
@@ -72,28 +72,50 @@ function theme_field_collection_table_multiple_value_fields($variables) {
     }
     usort($items, '_field_sort_items_value_helper');
 
-    $header = array(array('data' => '', 'class' => ''));
+    // Add empty th for table dragging.
+    if (!$element['#custom_settings']['nodragging']) {
+      $header = array(array('data' => '', 'class' => ''));
+    }
+
     // Add the items as table rows.
     foreach ($items as $key => $item) {
       uasort($item, 'element_sort');
       $item['_weight']['#attributes']['class'][] = $order_class;
-      $cells = array(
-        array('data' => '', 'class' => array('field-multiple-drag')),
-      );
+
+      $cells = array();
+      // Add classes for dragging if needed.
+      if (!$element['#custom_settings']['nodragging']) {
+        $cells = array(
+          array('data' => '', 'class' => array('field-multiple-drag')),
+        );
+      }
+
       foreach (element_children($item) as $count => $field_name) {
-        // Only add the header once.
-        if ($key == 0) {
-          $header[] = array(
-            'data' => '<label>' . t('!title', array('!title' => _field_collection_table_get_title($item[$field_name]))) . '</label>',
-            'class' => array('field-label'),
-          );
+        // Don't add the _weight
+        if (!$element['#custom_settings']['nodragging'] || $field_name != '_weight') {
+          // Only add the header once.
+          if ($key == 0) {
+            $header[] = array(
+              'data' => '<label>' . t('!title', array('!title' => _field_collection_table_get_title($item[$field_name]))) . '</label>',
+              'class' => array('field-label'),
+            );
+          }
+          $cells[] = array('data' => $item[$field_name]);
         }
-        $cells[] = array('data' => $item[$field_name]);
       }
-      $rows[] = array(
-        'data' => $cells,
-        'class' => array('draggable'),
-      );
+
+      // Mark rows as draggable if needed.
+      if (!$element['#custom_settings']['nodragging']) {
+        $rows[] = array(
+          'data' => $cells,
+          'class' => array('draggable'),
+        );
+      }
+      else {
+        $rows[] = array(
+          'data' => $cells,
+        );
+      }
     }
 
     $output = array(
@@ -109,6 +131,7 @@ function theme_field_collection_table_multiple_value_fields($variables) {
       '#theme' => 'table',
       '#header' => $header,
       '#rows' => $rows,
+      '#weight' => 20,
       '#attributes' => array(
         'id' => $table_id,
         'class' => array(
@@ -121,18 +144,24 @@ function theme_field_collection_table_multiple_value_fields($variables) {
         '#prefix' => '<div class="description">',
         '#suffix' => '</div>',
         '#markup' => $element['#description'],
+        '#weight' => 30,
       );
     }
     if (isset($add_more_button)) {
-      $output[] = $add_more_button + array(
+      $btn = $add_more_button + array(
         '#prefix' => '<div class="clearfix">',
         '#suffix' => '</div>',
       );
+      $btn['#weight'] = 40;
+      $output[] = $btn;
     }
 
     $output = drupal_render($output);
 
-    drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
+    // Add table drag magic.
+    if (!$element['#custom_settings']['nodragging']) {
+      drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
+    }
   }
   else {
     foreach (element_children($element) as $key) {
