--- webform_encrypt.module.orig	2012-03-26 16:34:29.377297200 +0800
+++ webform_encrypt.module	2012-03-27 12:05:43.471944900 +0800
@@ -99,11 +99,29 @@
   foreach ($renderable['#submission']->data as $cid => $entry) {
     if (isset($renderable['#node']->webform['components'][$cid]['extra']['encrypt']) &&
         $renderable['#node']->webform['components'][$cid]['extra']['encrypt']) {
+        
       $form_key = $renderable['#node']->webform['components'][$cid]['form_key'];
+      $pid = $renderable['#node']->webform['components'][$cid]['pid'];
+      $parents = array();
+      while ($pid > 0) {
+        $parent_key = $renderable['#node']->webform['components'][$pid]['form_key'];
+        $parents[] = array('form_key' => $parent_key, 'cid' => $pid);
+        $pid = $renderable['#node']->webform['components'][$pid]['pid'];
+      }
+      
+      if (empty($parents)) {
+        $component = &$renderable[$form_key];
+      }
+      else {
+        $parents = array_reverse($parents);
+        $component = &$renderable;
+        foreach($parents as $parent) $component = &$component[$parent['form_key']];
+        $component = &$component[$form_key];
+      }  
       if (user_access('view encrypted values', $account)) {
-        $renderable[$form_key]['#value'] = decrypt($entry['value'][0], array('base64' => TRUE));
+        $component[(!empty($component['#value'])) ? '#value' : '#markup'] = decrypt($entry['value'][0], array('base64' => TRUE)); 
       } else {
-        $renderable[$form_key]['#value'] = t('[Value Encrypted]');
+        $component[(!empty($component['#value'])) ? '#value' : '#markup'] = t('[Value Encrypted]');
       }
     }
   }
