예제 #1
0
 internal static void LoadEntityCustomFieldsValues(Entity entity, Guid organizationId, string localEntityId)
 {
     if (localEntityId != null)
     {
         ClientDataSet.EntityFieldsValuesDataTable table2 = GetEntityFieldsValues(organizationId, entity.Id, localEntityId);
         foreach (EntityField field in entity.CustomFields)
         {
             field.ClearSelectedValues();
             DataRow[] rows = table2.Select(string.Format(CultureInfo.InvariantCulture, "{0} = '{1}'", table2.EntityFieldIdColumn.ColumnName, field.Id.ToString()));
             foreach (ClientDataSet.EntityFieldsValuesRow row2 in rows)
             {
                 if (row2.IsValueNull())
                 {
                     if (field.AllowDBNull)
                     {
                         field.AddSelectedValue(null);
                     }
                 }
                 else
                 {
                     field.AddSelectedValue(row2.Value);
                 }
             }
         }
     }
 }
예제 #2
0
        internal static void SaveEntityCustomFields(Entity entity, Guid organizationId, string localEntityId)
        {
            if (localEntityId == null)
            {
                return;
            }

            ClientDataSet.EntityFieldsValuesDataTable table = GetEntityFieldsValues(organizationId, entity.Id, localEntityId);
            foreach (EntityField field in entity.CustomFields)
            {
                DataRow[] rows = table.Select(string.Format(CultureInfo.InvariantCulture, "{0} = '{1}' AND {2} = '{3}'"
                                                            , table.EntityFieldIdColumn.ColumnName, field.Id, table.LocalEntityIdColumn.ColumnName, Support.PreserveSingleQuote(localEntityId)));

                List <object> values = new List <object>(field.SelectedValues);
                if (field.AllowDBNull && (values.Count == 0))
                {
                    values.Add(null);
                }

                foreach (ClientDataSet.EntityFieldsValuesRow row in rows)
                {
                    object obj = null;
                    if (!row.IsValueNull())
                    {
                        obj = Support.ConvertStringToType(row.Value, field.DataType);
                    }
                    if (field.SelectedValues.Contains(obj))
                    {
                        values.Remove(obj);
                    }
                    else
                    {
                        row.Delete();
                    }
                }

                foreach (object obj in values)
                {
                    ClientDataSet.EntityFieldsValuesRow row = table.NewEntityFieldsValuesRow();
                    row.EntityFieldValueId = Guid.NewGuid();
                    row.EntityFieldId      = field.Id;
                    row.LocalEntityId      = localEntityId;
                    if (!Support.IsNullOrDBNull(obj))
                    {
                        row.Value = Convert.ToString(obj, CultureInfo.CurrentCulture);
                    }
                    table.AddEntityFieldsValuesRow(row);
                }
            }

            using (EntityFieldsValuesTableAdapter adapter = new EntityFieldsValuesTableAdapter(OrganizationProvider.GetConnectionString(organizationId)))
            {
                adapter.Update(table);
            }

            RemoveFromCache();
        }
예제 #3
0
        internal static void SaveEntityCustomField(EntityField field, Guid organizationId, string localEntityId)
        {
            if (localEntityId == null)
            {
                return;
            }

            ClientDataSet.EntityFieldsValuesDataTable table = GetEntityFieldValues(organizationId, field.Id, localEntityId);

            List <object> values = new List <object>(field.SelectedValues);

            if (field.AllowDBNull && (values.Count == 0))
            {
                values.Add(null);
            }

            foreach (ClientDataSet.EntityFieldsValuesRow row in table)
            {
                object obj = null;
                if (!row.IsValueNull())
                {
                    obj = Support.ConvertStringToType(row.Value, field.DataType);
                }
                if (field.SelectedValues.Contains(obj))
                {
                    values.Remove(obj);
                }
                else
                {
                    row.Delete();
                }
            }

            foreach (object obj in values)
            {
                ClientDataSet.EntityFieldsValuesRow row = table.NewEntityFieldsValuesRow();
                row.EntityFieldValueId = Guid.NewGuid();
                row.EntityFieldId      = field.Id;
                row.LocalEntityId      = localEntityId;
                if (!Support.IsNullOrDBNull(obj))
                {
                    row.Value = Convert.ToString(obj, CultureInfo.CurrentCulture);
                }
                table.AddEntityFieldsValuesRow(row);
            }

            using (EntityFieldsValuesTableAdapter adapter = new EntityFieldsValuesTableAdapter(OrganizationProvider.GetConnectionString(organizationId)))
            {
                adapter.Update(table);
            }

            RemoveFromCache();
        }