public void Save()
        {
            bool hasErrors = false;

            foreach (KeyValuePair <string, DataEditorSettingType> k in dtSettings)
            {
                var   result = k.Value.Validate();
                Label lbl    = _phSettings.FindControlRecursive <Label>("lbl" + k.Key);
                if (result == null && lbl != null)
                {
                    if (lbl != null)
                    {
                        lbl.Text = string.Empty;
                    }
                }
                else
                {
                    if (hasErrors == false)
                    {
                        hasErrors = true;
                    }

                    if (lbl != null)
                    {
                        lbl.Text = " " + result.ErrorMessage;
                    }
                }
            }

            if (!hasErrors)
            {
                _datatype.DBType =
                    (umbraco.cms.businesslogic.datatype.DBTypes)
                    Enum.Parse(typeof(umbraco.cms.businesslogic.datatype.DBTypes), _dropdownlist.SelectedValue, true);

                // Generate data-string
                string data = _dropdownlistUserControl.SelectedValue;

                // If the add new prevalue textbox is filled out - add the value to the collection.
                using (var sqlHelper = Application.SqlHelper)
                {
                    IParameter[] SqlParams = new IParameter[]
                    {
                        sqlHelper.CreateParameter("@value", data),
                        sqlHelper.CreateParameter("@dtdefid", _datatype.DataTypeDefinitionId)
                    };
                    sqlHelper.ExecuteNonQuery("delete from cmsDataTypePreValues where datatypenodeid = @dtdefid", SqlParams);
                    // we need to populate the parameters again due to an issue with SQL CE
                    SqlParams = new IParameter[]
                    {
                        sqlHelper.CreateParameter("@value", data),
                        sqlHelper.CreateParameter("@dtdefid", _datatype.DataTypeDefinitionId)
                    };
                    sqlHelper.ExecuteNonQuery(
                        "insert into cmsDataTypePreValues (datatypenodeid,[value],sortorder,alias) values (@dtdefid,@value,0,'')",
                        SqlParams);
                }

                //settings

                DataEditorSettingsStorage ss = new DataEditorSettingsStorage();

                //ss.ClearSettings(_datatype.DataTypeDefinitionId);

                int i = 0;
                foreach (KeyValuePair <string, DataEditorSettingType> k in dtSettings)
                {
                    ss.InsertSetting(_datatype.DataTypeDefinitionId, k.Key, k.Value.Value, i);
                    i++;
                }

                ss.Dispose();

                if (dtSettings.Count == 0)
                {
                    if (!string.IsNullOrEmpty(Configuration))
                    {
                        LoadSetttings(Configuration);
                    }
                }
            }
        }