private void CustomMeasurementForm_ContentLoaded(object sender, DataFormContentLoadEventArgs e) { ComboBox measurementUnits = CustomMeasurementForm.FindNameInContent("MeasurementUnits") as ComboBox; DataField customUnitField = CustomMeasurementForm.FindNameInContent("CustomUnitField") as DataField; context.Load <MeasurementUnit>(context.GetMeasurementUnitsQuery(), LoadBehavior.RefreshCurrent, (MeasurementUnitsLoaded) => { if (!MeasurementUnitsLoaded.HasError) { measurementUnits.ItemsSource = MeasurementUnitsLoaded.Entities; measurementUnits.SelectedIndex = 0; } }, null); measurementUnits.SelectionChanged += (sev, eve) => { MeasurementUnit selected = measurementUnits.SelectedItem as MeasurementUnit; if (selected != null) { if (selected.id > 0) { customUnitField.Visibility = Visibility.Collapsed; selectedUnit = selected; } else { customUnitField.Visibility = Visibility.Visible; selectedUnit = null; } } }; }
private void CustomMeasurementForm_EditEnded(object sender, DataFormEditEndedEventArgs e) { if (e.EditAction == DataFormEditAction.Cancel && CustomMeasurementCancelled != null) { CustomMeasurementCancelled(this, null); } else { if (CustomMeasurementForm.ValidateItem()) { // If validation succeeds then add the exercise to the database context.Measurements.Add(CustomMeasurementForm.CurrentItem as FitnessTrackerPlus.Web.Data.Measurement); context.SubmitChanges((MeasurementSubmitted) => { if (!MeasurementSubmitted.HasError) { FitnessTrackerPlus.Web.Data.Measurement customMeasurement = CustomMeasurementForm.CurrentItem as FitnessTrackerPlus.Web.Data.Measurement; // If user has selected an existing unit of measure create a new entry // in the measurements_measurement_units table if (selectedUnit != null) { context.MeasurementsUnits.Add(new MeasurementsUnits { unit_id = selectedUnit.id, measurement_id = customMeasurement.id }); context.SubmitChanges((MeasurementsUnitsSubmitted) => { if (!MeasurementsUnitsSubmitted.HasError) { if (CustomMeasurementCreated != null) { CustomMeasurementCreated(this, new CustomMeasurementCreatedEventArgs(customMeasurement)); } } }, null); } else { // Otherwise we also need to add an entry to the measurement_units table TextBox customUnit = CustomMeasurementForm.FindNameInContent("CustomUnit") as TextBox; context.MeasurementUnits.Add(new MeasurementUnit { unit = customUnit.Text, user_id = Globals.CurrentUser.id }); context.SubmitChanges((MeasurementUnitSubmitted) => { if (!MeasurementUnitSubmitted.HasError) { // Need to use the id of the newly created unit of measure MeasurementUnit createdUnit = MeasurementUnitSubmitted.ChangeSet.AddedEntities[0] as MeasurementUnit; context.MeasurementsUnits.Add(new MeasurementsUnits { unit_id = createdUnit.id, measurement_id = customMeasurement.id }); context.SubmitChanges((MeasurementsUnitsSubmitted) => { if (!MeasurementsUnitsSubmitted.HasError) { if (CustomMeasurementCreated != null) { CustomMeasurementCreated(this, new CustomMeasurementCreatedEventArgs(customMeasurement)); } } }, null); } }, null); } } }, null); } } }