Index: fittingview/src/sans/perspectives/fitting/basepage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/basepage.py	(revision ace0e335767af383062d7bec6d6a283b80f7e652)
+++ fittingview/src/sans/perspectives/fitting/basepage.py	(revision 01642fec6bf5e3db95e0ec53e5600874e22da18e)
@@ -615,5 +615,5 @@
         msg +=" reloaded"
         wx.PostEvent(self.parent.parent, StatusEvent(status=msg))
-        
+        self.Show(False)
         name = menu.GetLabel(event.GetId())
         self._on_select_model_helper()
@@ -621,7 +621,7 @@
             previous_state = self.saved_states[name]
             ## reset state of checkbox,textcrtl  and  regular parameters value
-            self.Show(False)
+            
             self.reset_page(previous_state)   
-            self.Show(True)
+        self.Show(True)
                
     def on_preview(self, event):
@@ -1799,4 +1799,5 @@
             weight = get_weight(data=self.data, is2d=self._is_2D(), flag=flag)
             toggle_mode_on = self.model_view.IsEnabled()
+            is_2d = self._is_2D()
             self._manager.draw_model(self.model, 
                                     data=self.data,
@@ -1807,5 +1808,5 @@
                                     toggle_mode_on=toggle_mode_on, 
                                     state = self.state,
-                                    enable2D=self.enable2D,
+                                    enable2D=is_2d,
                                     update_chisqr=update_chisqr,
                                     weight=weight)
@@ -3024,9 +3025,11 @@
                             float(pd)
                         except:
-                            continue
-                            #if not pd and pd != '':
-                            #    continue
+                            #continue
+                            if not pd and pd != '':
+                                continue
                     item[2].SetValue(str(pd))
-                    
+                    if item in self.fixed_param and pd == '':
+                        # Only array func has pd == '' case.
+                        item[2].Enable(False)
                     if item[2].__class__.__name__ == "ComboBox":
                         if self.model.fun_list.has_key(content[name][0]):
@@ -3049,7 +3052,7 @@
                                 pd = float(pd)
                             except:
-                                continue
-                                #if not pd and pd != '':
-                                #    continue
+                                #continue
+                                if not pd and pd != '':
+                                    continue
                         item[2].SetValue(str(pd))
                         if item in self.fixed_param and pd == '':
@@ -3077,5 +3080,6 @@
                 item[7].SetValue(value[1])
                 selection = item[7].GetCurrentSelection()
-                param_name = item[7].Name.split('.')[0]
+                name = item[7].Name
+                param_name = name.split('.')[0]
                 disp_name = item[7].GetValue()
                 dispersity= item[7].GetClientData(selection)
@@ -3089,10 +3093,11 @@
                             disp_model.set_weights(pd_vals, 
                                                    pd_weights)
-                            self.values[param_name] = pd_vals
-                            self.weights[param_name] = pd_weights
+                            self.values[name] = pd_vals
+                            self.weights[name] = pd_weights
                             # disable the fixed items for array
                             item[0].SetValue(False)
                             item[0].Enable(False)
                             item[2].Enable(False)
+                            item[3].Show(False)
                             item[4].Show(False)
                             item[5].SetValue('')
@@ -3102,9 +3107,15 @@
                 except:
                     pass 
-                self._disp_obj_dict[param_name] = disp_model
-                self.model.set_dispersion(param_name, 
+                self._disp_obj_dict[name] = disp_model
+                self.model.set_dispersion(name, 
                                           disp_model)
-                self.state._disp_obj_dict[param_name] = \
+                self.state._disp_obj_dict[name] = \
                                           disp_model
+                self.model.set_dispersion(name, disp_model)
+                state.values = self.values
+                state.weights = self.weights    
+                self.model._persistency_dict[name] = \
+                                        [state.values, state.weights]
+                    
                     
             except:
