private void ButtonOk_OnClick(object sender, RoutedEventArgs e) { if (tabControl != null && tabControl.SelectedIndex != 0) { tabControl.SelectedIndex = 0; return; } profilesList.IsCloseVisible = Visibility.Collapsed; profilesList.Items.Refresh(); tbProfileName.HideTip(); mainGrid.IsEnabled = false; ProfilesDbLogic.SaveProfilesToDb(m_ProfileEngine.PlainCollection); var dialog = new DialogWindow("Сообщение", "Профили в базе обновлены"); dialog.ButtonConfig(DialogWindow.EbConfig.OK); var result = dialog.ShowDialog(); if (result.HasValue && result.Value) { mainGrid.IsEnabled = true; } //if (NavigationService != null) //{ // ClearFilter(); // NavigationService.Navigate(Cache.Technician); //} }
private void NeedSyncButton_Click(object sender, RoutedEventArgs e) { //синхронизируем выделенный профиль Profile profile = profilesList.SelectedItem as Profile; if (profile != null) { bool?Found = false; //UI имеет возможность работы с сервером CentralDatabaseService без использования Service.exe. если связь с сервером установлена и профиль успешно получен, то синхронизируем выбранный профиль ProfileItem ActualProfileItem = GetProfileItemFromServerDb(sender, profile.Name, Cache.Main.VM.MmeCode, ref Found); switch (Found) { case null: //связь с SCME.DatabaseServer не установлена, но работоспособность должна быть в любом случае break; case true: if (ActualProfileItem != null) { //профиль получен, смотрим надо ли выполнять синхронизацию if (IsNeedSync(ActualProfileItem, profile)) { //есть необходимость в синхронизации данных, заменяем данные профиля который отображается в списке теми данными, что содержатся в ActualProfileItem CopyProfileItemToProfile(ActualProfileItem, profile); //после выполнения копирования идентификатор профиля изменился, поэтому FLastSelectedProfileKey = profile.Key; //сохраняем синхронизированный profile в локальную базу данных IList <Profile> ProfileEngine = (IList <Profile>)profilesList.ItemsSource; ProfilesDbLogic.SaveProfilesToDb(ProfileEngine); //обновляем данные на форме RefreshBindings(); } } break; case false: { //искомый профиль не найден, возможно он был удалён из центральной базы данных, значит надо удалить его и из локальноЙ базы данных IList <Profile> ProfileEngine = (IList <Profile>)profilesList.ItemsSource; ProfileEngine.Remove(profile); ProfilesDbLogic.SaveProfilesToDb(ProfileEngine); //BuildTittle(); if (profilesList.Items.Count > 0) { profilesList.SelectedIndex = 0; } } break; } //синхронизация выбранного профиля выполнена - прячем кнопку ((Button)sender).Visibility = Visibility.Hidden; } }