Browse Source

Выполняю РАБОТА С БАЗОЙ ДАННЫХ В ПРИЛОЖЕНИИ: ЧТЕНИЕ, ДОБАВЛЕНИЕ, РЕДАКТИРОВАНИЕ, УДАЛЕНИЕ ДАННЫХ (ЧАСТЬ 2)

Kuzmenco 2 years ago
parent
commit
42df1e82e0

BIN
.vs/Savelev_ToursApp/v16/.suo


+ 6 - 6
AddEditPage.xaml

@@ -24,18 +24,18 @@
         <TextBlock Text="Страна" Grid.Row="2"></TextBlock>
         <TextBlock MaxHeight="100" Grid.Column="1"></TextBlock>
         <TextBlock Grid.Column="1"/>
-        <TextBlock Grid.Column="1" Margin="10,0,22,27" Height="29" VerticalAlignment="Bottom" RenderTransformOrigin="0.5,3.25" Background="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}"/>
-        <TextBlock Grid.Column="1" Margin="0,0,407,57" RenderTransformOrigin="0.311,0.92" Grid.Row="1" Background="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}" HorizontalAlignment="Right" Width="241" Height="34" VerticalAlignment="Bottom">
-            <TextBlock.RenderTransform>
+        <TextBox Text="{Binding Name}" Grid.Column="1" Margin="10,0,22,27" Height="29" VerticalAlignment="Bottom" RenderTransformOrigin="0.5,3.25" Background="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}"/>
+        <TextBox Text="{Binding CountOfStars}" Grid.Column="1" Margin="0,0,408,38" RenderTransformOrigin="0.311,0.92" Grid.Row="1" Background="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}" HorizontalAlignment="Right" Width="241" Height="34" VerticalAlignment="Bottom">
+            <TextBox.RenderTransform>
                 <TransformGroup>
                     <ScaleTransform/>
                     <SkewTransform AngleY="-0.112"/>
                     <RotateTransform/>
                     <TranslateTransform Y="-0.386"/>
                 </TransformGroup>
-            </TextBlock.RenderTransform>
-        </TextBlock>
-        <ComboBox x:Name="ComboCountries" DisplayMemberPath="Name" Grid.Row="2" Grid.Column="1" Margin="0,0,10,31" Height="38" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="645"></ComboBox>
+            </TextBox.RenderTransform>
+        </TextBox>
+        <ComboBox SelectedItem="{Binding Country}" x:Name="ComboCountries" DisplayMemberPath="Name" Grid.Row="2" Grid.Column="1" Margin="0,0,10,31" Height="38" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="645"></ComboBox>
 
         <Button Content="Сохранить" Grid.ColumnSpan="2" Grid.Row="3" Name="BtnSave" Click="BtnSave_Click"></Button>
     </Grid>

+ 33 - 1
AddEditPage.xaml.cs

@@ -20,14 +20,46 @@ namespace Savelev_ToursApp
     /// </summary>
     public partial class AddEditPage : Page
     {
-        public AddEditPage()
+        private Hotel _currentHotel = new Hotel();
+        public AddEditPage(Hotel selectedHotel)
         {
             InitializeComponent();
+
+            if (selectedHotel != null)
+                _currentHotel = selectedHotel;
+
+            DataContext = _currentHotel;
             ComboCountries.ItemsSource = Savelev_ToursEntities.GetContext().Country.ToList();   
         }
         private void BtnSave_Click(object sender, RoutedEventArgs e)
         {
+            StringBuilder errors = new StringBuilder();
+
+            if (string.IsNullOrWhiteSpace(_currentHotel.Name))
+                errors.AppendLine("Укажите название отеля");
+            if (_currentHotel.CountOfStars < 1 || _currentHotel.CountOfStars > 5)
+                errors.AppendLine("Количество звезд - число от 1 до 5");
+            if(_currentHotel.Country == null)
+                errors.AppendLine("Выберите страну");
+
+            if (errors.Length > 0)
+            {
+                MessageBox.Show(errors.ToString());
+                return;
+            }
+
+            if (_currentHotel.Id == 0)
+                Savelev_ToursEntities.GetContext().Hotels.Add(_currentHotel);
 
+            try
+            {
+                Savelev_ToursEntities.GetContext().SaveChanges();
+                MessageBox.Show("Информация сохранена!");
+            }
+            catch(Exception ex)
+            {
+                MessageBox.Show(ex.Message.ToString());
+            }
         }
     }
 }

+ 1 - 1
HotelsPage.xaml

@@ -6,7 +6,7 @@
       xmlns:local="clr-namespace:Savelev_ToursApp"
       mc:Ignorable="d" 
       d:DesignHeight="450" d:DesignWidth="800"
-      Title="HotelsPage">
+      Title="HotelsPage" IsVisibleChanged="Page_IsVisibleChanged">
 
     <Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
         <Grid.RowDefinitions>

+ 32 - 4
HotelsPage.xaml.cs

@@ -23,26 +23,54 @@ namespace Savelev_ToursApp
         public HotelsPage()
         {
             InitializeComponent();
-            DGridHotels.ItemsSource = Savelev_ToursEntities.GetContext().Hotel.ToList();
+            DGridHotels.ItemsSource = Savelev_ToursEntities.GetContext().Hotels.ToList();
         }
 
         private void Button_Click(object sender, RoutedEventArgs e)
         {
-            Manager.MainFrame.Navigate(new AddEditPage());
+            Manager.MainFrame.Navigate(new AddEditPage((sender as Button).DataContext as Hotel));
         }
          
         private void BtnEdit_Click(object sender, RoutedEventArgs e)
         {
-
+            Manager.MainFrame.Navigate(new AddEditPage((sender as Button).DataContext as Hotel));
         }
         
         private void BtnAdd_Click(object sender, RoutedEventArgs e)
         {
-            Manager.MainFrame.Navigate(new AddEditPage());
+            Manager.MainFrame.Navigate(new AddEditPage(null));
         }
         private void BtnDelete_Click(object sender, RoutedEventArgs e)
         {
+            var hotelsForRemoving = DGridHotels.SelectedItems.Cast<Hotel>().ToList();
+
+            if (MessageBox.Show($"Вы точно хотите удалить следующие {hotelsForRemoving.Count()} элементов?", "Внимание",
+                MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
+            {
+                try
+                    
+                {
+                    Savelev_ToursEntities.GetContext().Hotels.RemoveRange(hotelsForRemoving);
+                    Savelev_ToursEntities.GetContext().SaveChanges();
+                    MessageBox.Show("Удалено");
+
+                    DGridHotels.ItemsSource = Savelev_ToursEntities.GetContext().Hotels.ToList();
 
+                }
+                catch (Exception ex)
+                {
+                    MessageBox.Show(ex.Message.ToString());
+                }
+            }
+        }
+
+        private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
+        {
+            if (Visibility == Visibility.Visible)
+            {
+                Savelev_ToursEntities.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());
+                DGridHotels.ItemsSource = Savelev_ToursEntities.GetContext().Hotels.ToList();
+            }
         }
     }
 }

+ 1 - 1
Model1.Context.cs

@@ -35,7 +35,7 @@ namespace Savelev_ToursApp
         }
     
         public DbSet<Country> Country { get; set; }
-        public DbSet<Hotel> Hotel { get; set; }
+        public DbSet<Hotel> Hotels { get; set; }
         public DbSet<HotelComment> HotelComment { get; set; }
         public DbSet<HotelImage> HotelImage { get; set; }
         public DbSet<sysdiagrams> sysdiagrams { get; set; }

BIN
bin/Debug/Savelev_ToursApp.exe


BIN
bin/Debug/Savelev_ToursApp.pdb


BIN
obj/Debug/AddEditPage.baml


+ 1 - 1
obj/Debug/AddEditPage.g.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\AddEditPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "05F17398A662B340C8633492E25E2A6E54CEB2F102B8DD84A5105AEA93CF95A2"
+#pragma checksum "..\..\AddEditPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "F5D557A1C9F1790A281C28D46543E0C7ADF04D2A5A745DFD8F6CB87F1F6793CB"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     Этот код создан программой.

+ 1 - 1
obj/Debug/AddEditPage.g.i.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\AddEditPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "05F17398A662B340C8633492E25E2A6E54CEB2F102B8DD84A5105AEA93CF95A2"
+#pragma checksum "..\..\AddEditPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "F5D557A1C9F1790A281C28D46543E0C7ADF04D2A5A745DFD8F6CB87F1F6793CB"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     Этот код создан программой.

BIN
obj/Debug/HotelsPage.baml


+ 12 - 4
obj/Debug/HotelsPage.g.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\HotelsPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "E2F6B629B3E0CFAC49F6DE0EFB01BE11116459A2071CDE06C42F2D7E141CE3B1"
+#pragma checksum "..\..\HotelsPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2C1CC0783D43F84B26375BD867F1C84C3940982DACE8F5376EB25043F2461B1A"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     Этот код создан программой.
@@ -95,9 +95,17 @@ namespace Savelev_ToursApp {
             switch (connectionId)
             {
             case 1:
+            
+            #line 9 "..\..\HotelsPage.xaml"
+            ((Savelev_ToursApp.HotelsPage)(target)).IsVisibleChanged += new System.Windows.DependencyPropertyChangedEventHandler(this.Page_IsVisibleChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
             this.DGridHotels = ((System.Windows.Controls.DataGrid)(target));
             return;
-            case 3:
+            case 4:
             this.BtnADD = ((System.Windows.Controls.Button)(target));
             
             #line 30 "..\..\HotelsPage.xaml"
@@ -106,7 +114,7 @@ namespace Savelev_ToursApp {
             #line default
             #line hidden
             return;
-            case 4:
+            case 5:
             this.BtnDelete = ((System.Windows.Controls.Button)(target));
             
             #line 31 "..\..\HotelsPage.xaml"
@@ -128,7 +136,7 @@ namespace Savelev_ToursApp {
         void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) {
             switch (connectionId)
             {
-            case 2:
+            case 3:
             
             #line 24 "..\..\HotelsPage.xaml"
             ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.BtnEdit_Click);

+ 12 - 4
obj/Debug/HotelsPage.g.i.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\HotelsPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "E2F6B629B3E0CFAC49F6DE0EFB01BE11116459A2071CDE06C42F2D7E141CE3B1"
+#pragma checksum "..\..\HotelsPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2C1CC0783D43F84B26375BD867F1C84C3940982DACE8F5376EB25043F2461B1A"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     Этот код создан программой.
@@ -95,9 +95,17 @@ namespace Savelev_ToursApp {
             switch (connectionId)
             {
             case 1:
+            
+            #line 9 "..\..\HotelsPage.xaml"
+            ((Savelev_ToursApp.HotelsPage)(target)).IsVisibleChanged += new System.Windows.DependencyPropertyChangedEventHandler(this.Page_IsVisibleChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
             this.DGridHotels = ((System.Windows.Controls.DataGrid)(target));
             return;
-            case 3:
+            case 4:
             this.BtnADD = ((System.Windows.Controls.Button)(target));
             
             #line 30 "..\..\HotelsPage.xaml"
@@ -106,7 +114,7 @@ namespace Savelev_ToursApp {
             #line default
             #line hidden
             return;
-            case 4:
+            case 5:
             this.BtnDelete = ((System.Windows.Controls.Button)(target));
             
             #line 31 "..\..\HotelsPage.xaml"
@@ -128,7 +136,7 @@ namespace Savelev_ToursApp {
         void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) {
             switch (connectionId)
             {
-            case 2:
+            case 3:
             
             #line 24 "..\..\HotelsPage.xaml"
             ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.BtnEdit_Click);

BIN
obj/Debug/Savelev_ToursApp.exe


BIN
obj/Debug/Savelev_ToursApp.g.resources


BIN
obj/Debug/Savelev_ToursApp.pdb