private void Form1_Load(object sender, EventArgs e) { //ANTENNA antenna = (ANTENNA)Enum.Parse(typeof(ANTENNA), "天線"); ANTENNA antenna = GetValueByDescription <ANTENNA>("假負載"); textBox1.Text = string.Format("{0}", (int)antenna); }
//добавление строки private void AddData(object o) { newRow = new ANTENNA(); newRow.ANT_TYPE = ""; methodsEntities.ANTENNA.Add(newRow); SaveData(null); //сохранение в БД новой строки и предоставление её на корректировку }
//удаление строки антенны private void DeleteData(ANTENNA focusedRow) { if (focusedRow == null || focusedRow.ANT_ID == 0) { return; } if (methodsEntities.MEASURING_DATA.Where(p => p.MDA_ANT_ID == focusedRow.ANT_ID).Count() != 0) //есть ссылка на выбранную строку { MessageBox.Show("Строка не может быть удалена, т.к. ссылка на неё используется в других таблицах"); return; } methodsEntities.ANTENNA.Remove(focusedRow); antennas.Remove(focusedRow); methodsEntities.SaveChanges(); RefreshGcAntennas?.Invoke(); if (antennas.Any()) { selectedRow = antennas[0]; } isEnabled = false; }
//сохранение строки private void SaveData(Object o) { //пробежимся по строкам калибровочной таблицы и удалим незаполненные bool key = true; while (key && newRow == null) //только для сохранения не вновь добавленной строки { key = false; foreach (ANTENNA_CALIBRATION ac in data) { if (ac.ANT_CAL_F == 0 || ac.ANT_CAL_VALUE == 0) { data.Remove(ac); methodsEntities.ANTENNA_CALIBRATION.Remove( methodsEntities.ANTENNA_CALIBRATION.Where(p => p.ANT_CAL_ID == ac.ANT_CAL_ID) .FirstOrDefault()); key = true; break; } } //всё просмотрели, ничего не пришлось удалять } try { int selectedRowId; if (newRow != null) //сохранение новой записи { methodsEntities.SaveChanges(); selectedRowId = newRow.ANT_ID; antennas = new ObservableCollection <ANTENNA>(methodsEntities.ANTENNA.OrderBy(p => p.ANT_TYPE)); //.OrderBy(p => p.ANT_TYPE) isEnabled = true; newRow = null; //запись уже не новая //RefreshGcAntennas?.Invoke(); //перепривязка данных, иначе таблица не обновляется // selectedRow = antennas.Where(p => p.ANT_ID == selectedRowId).FirstOrDefault(); } else //сохранение откорректированной записи { methodsEntities.Entry(selectedRow).State = EntityState.Modified; selectedRowId = selectedRow.ANT_ID; if (String.IsNullOrEmpty(selectedRow.ANT_TYPE)) { MessageBox.Show("Заполните поле 'Тип антенны'"); FocusUI("AntType"); return; } if (String.IsNullOrEmpty(selectedRow.ANT_MODEL)) { MessageBox.Show("Заполните поле 'Модель'"); FocusUI("Model"); return; } if (selectedRow.ANT_F_UNIT_ID == null || selectedRow.ANT_F_UNIT_ID == 0) { MessageBox.Show("Заполните поле 'Единица измерения частоты'"); FocusUI("UnitId"); return; } methodsEntities.SaveChanges(); antennas = new ObservableCollection <ANTENNA>(methodsEntities.ANTENNA.OrderBy(p => p.ANT_TYPE)); isEnabled = false; RefreshGcAntennas?.Invoke(); //перепривязка данных, иначе связанные данные не обновляется } // RefreshGcAntennas?.Invoke(); //перепривязка данных, иначе связанные данные не обновляется //selectedRow = antennas.Where(p => p.ANT_ID == selectedRowId).FirstOrDefault(); } catch (Exception e) { MessageBox.Show("Ошибка сохранения изменения в БД. " + e.Message); } RaisePropertyChanged(() => selectedRow); }