Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Нужна-помощь
0 / 0 / 0
Регистрация: 13.11.2018
Сообщений: 1
1

Как сделать кнопку удалить и кнопку обновить для БД?

13.11.2018, 05:04. Просмотров 107. Ответов 2
Метки нет (Все метки)

Ребят всем Hello! По-могите плиз решить проблему. Как сделать кнопку удалить и кнопку обновить(есть кнопка сохранить, если я добавляю новую запись и нажимаю сохранить, то колонку заносит в базу данных, но если я хочу отредактировать и нажать кнопку сохранить, пересохранения не происходить. Я скину вам весь код, посмотрите че да как.

Кнопка удалить находится в классе MainWindow.cs
Кнопка сохранить находится в классе Client.cs(она есть и в MainWindow) но там как я понял уже все норм, нужно в Client.cs дописать.

===================== ЭТО XAML - MainWindow.xaml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<Window x:Class="CommerceClients.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:CommerceClients"
        mc:Ignorable="d"
        xmlns:dragablz="clr-namespace:Dragablz;assembly=Dragablz"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        Height="600" Width="1080" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" WindowStyle="None" Loaded="Window_Loaded">
    <Grid>
        <Grid Height="60" VerticalAlignment="Top" Background="#FF9C27B0">
            <TextBlock Text="Commerce Clients" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="BRUX"/>
            <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Height="40" HorizontalAlignment="Right" Margin="10">
                <Button Style="{StaticResource MaterialDesignFloatingActionMiniAccentButton}" Width="30" Height="30" Padding="0" Background="{x:Null}" BorderBrush="{x:Null}" Click="MinimizeButton_Click">
                    <materialDesign:PackIcon Kind="MenuDown"/>
                </Button>
                <Button x:Name="button1" Style="{StaticResource MaterialDesignFloatingActionMiniAccentButton}" Width="30" Height="30" Padding="0" Background="{x:Null}" BorderBrush="{x:Null}" Click="MaximizeButton_Click">
                    <materialDesign:PackIcon Kind="ArrowTopRight"/>
                </Button>
                <Button Style="{StaticResource MaterialDesignFloatingActionMiniAccentButton}" Width="30" Height="30" Padding="0" Background="{x:Null}" BorderBrush="{x:Null}" Click="Power">
                    <materialDesign:PackIcon Kind="Power"/>
                </Button>
            </StackPanel>
        </Grid>
        <StatusBar MouseDoubleClick="ClickSize" MouseLeftButtonDown="Grid_MouseLeftButtonDown" Width="1400" Height="30" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,-7,-998919,0"/>
        <Grid Margin="0 60 0 0">
            <dragablz:TabablzControl x:Name="tabControl" >
                <dragablz:TabablzControl.InterTabController>
                    <dragablz:InterTabController/>
                </dragablz:TabablzControl.InterTabController>
                <TabItem Header="Clients">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <ListView x:Name="listClients">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Имя клиента" Width="200">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Grid>
                                                    <TextBox Text="{Binding Full_name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                </Grid>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Header="E-mail" Width="200">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Grid>
                                                    <TextBox Text="{Binding email, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                </Grid>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Header="Адрес" Width="200">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Grid>
                                                    <TextBox Text="{Binding adress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                                </Grid>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn >
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Grid>
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition/>
                                                        <ColumnDefinition/>
                                                    </Grid.ColumnDefinitions>
                                                    <Button Content="Сохранить" Grid.Column="0" Tag="{Binding}" Click="buttonSaveClient"/>
                                                    <Button Content="Удалить" Margin="20 0 0 0" Grid.Column="1" Tag="{Binding}" Click="buttonDeleteClient"/>
                                                </Grid>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                </GridView>
                            </ListView.View>
                        </ListView>
                        <Button Content="Добавить запись" HorizontalAlignment="Left" Grid.Row="1" Click="buttonAddClient"/>
                    </Grid>
                </TabItem>
                <TabItem Header="Products">
                    <TextBlock Text="This is Products" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </TabItem>
                <TabItem Header="Services">
                    <TextBlock Text="This is Services" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </TabItem>
                <TabItem>
                    <TabItem.Header>
                        <materialDesign:PackIcon Kind="Search" Foreground="White"/>
                    </TabItem.Header>
                    <Grid Background="#FF741EFF">
                        
                    </Grid>
                </TabItem>
            </dragablz:TabablzControl>
        </Grid>
    </Grid>
</Window>
=================== ЭТО КЛАСС MainWindow.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace CommerceClients
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            //Client.InsertData(new Client { adress = "asaf", email = "safaf", Full_name = "asfafs" });
        }
 
        private void MaximizeButton_Click(object sender, RoutedEventArgs e)
        {
            AdjustWindowSize();
        }
        private void AdjustWindowSize()
        {
            if (this.WindowState == WindowState.Maximized)
            {
                this.WindowState = WindowState.Normal;
            }
            else
            {
                this.WindowState = WindowState.Maximized;
            }
        }
 
        private void MinimizeButton_Click(object sender, RoutedEventArgs e)
        {
            this.WindowState = WindowState.Minimized;
        }
        private void FakeTitleBar_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton == MouseButton.Left)
            {
                if (e.ClickCount == 2)
                {
                    AdjustWindowSize();
                }
                else
                {
                    Application.Current.MainWindow.DragMove();
                }
            }
        }
        private void ClickSize(object sender, RoutedEventArgs e)
        {
            AdjustWindowSize();
        }
        private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DragMove();
        }
 
        private void Power(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
        }
 
        ObservableCollection<Client> clients;
        private object data;
 
        private void buttonAddClient(object sender, RoutedEventArgs e)
        {
            clients.Add(new Client { Full_name = "введите имя", adress = "введите адрес", email = "введите email" });
        }           
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            clients = Client.SelectAll();
            listClients.ItemsSource = clients;
        }
 
        private void buttonSaveClient(object sender, RoutedEventArgs e)
        {
            var client = (Client)((Button)sender).Tag;
            if (client.idClients == 0)
                Client.InsertData(client);
            else
                Client.UpdateDate(client);
        }
 
        private void ExecuteNonQuerySQL(string sql)
        {
            throw new NotImplementedException();
        }
 
        private void buttonDeleteClient(object sender, RoutedEventArgs e)
        {
            string sql = "delete from Clients where id = " + data.idClient;
            ExecuteNonQuerySQL(sql);
        }
 
    }
}
========================= ЭТО КЛАСС ТАБЛИЦЫ Client.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace CommerceClients
{
    public class Client : MySQL
    {
        public int idClients { get; set; }
        public string Full_name { get; set; }
        public string email { get; set; }
        public string adress { get; set; }
 
 
        public int ListNumber;
 
        public static void InsertData(Client data)
        {
            string sql = "insert into Clients values (0, '" +
                data.Full_name.Replace((char)39, (char)4) + "', '" + data.email.Replace((char)39, (char)4) + "', '" + data.adress.Replace((char)39, (char)4) + "')";
            ExecuteNonQuerySQL(sql);
        }
 
 
        public static ObservableCollection<Client> SelectAll()
        {
            ObservableCollection<Client> result = new ObservableCollection<Client>();
            Client data;
            string sql = "select * from Clients";
 
            if (OpenConnection())
            {
                using (MySqlCommand mc =
                new MySqlCommand(sql, connect))
                {
                    using (MySqlDataReader dr = mc.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            data = new Client
                            {
                                idClients = dr.GetInt32("idClients"),
                                Full_name = dr.GetString("Full_name").Replace((char)4, (char)39),
                                email = dr.GetString("email").Replace((char)4, (char)39),
                                adress = dr.GetString("adress").Replace((char)4, (char)39),
                                ListNumber = result.Count
                            };
                            result.Add(data);
                        }
                    }
                }
                CloseConnection();
            }
            return result;
        }
        private static object data;
 
        internal static void UpdateDate(Client client)
        {
            string sql = "update Clients set name = '" +
                data.Full_name.Replace((char)39, (char)4) + "', '" + data.email.Replace((char)39, (char)4) + "', '" + data.adress.Replace((char)39, (char)4) + "')";
            ExecuteNonQuerySQL(sql);
        }
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2018, 05:04
Ответы с готовыми решениями:

Как сделать, что бы по нажатию на одну кнопку срабатывал EventTrigger для другой кнопки
Подскажите, вот есть две кнопки. Как сделать, что бы по нажатию на одну кнопку срабатывал...

как создать графический объект, например кнопку, из события "нажатие на другую кнопку"
Возник вопрос.. как можно создать кнопку или другой графический объект, например Rectangle из...

Как сделать кнопку прямоугольной?
Здравствуйте, подскажите, как сделать кнопку такой же прямоугольной как на картинке?

Как из Grid сделать кнопку
Когда писал под WP7 в Grid можно было вставить Tap=&quot;&quot; и обработчик в коде, а как это сделать в...

как сделать кнопку неактивной
Доброго времени суток! у меня имеется кнопка. на событие клик для неё назначено задание. как...

2
freeba
Неадекват
1278 / 1075 / 206
Регистрация: 02.04.2010
Сообщений: 2,473
Записей в блоге: 2
Завершенные тесты: 2
13.11.2018, 09:15 2
Цитата Сообщение от Нужна-помощь Посмотреть сообщение
Я скину вам весь код, посмотрите че да как.
Все не так, вы пишите на WPF в стиле WinForms - это возможно, но после пары тысяч строк проект превратится в образец превозмогания (основные юзкейсы WPF заточены под MVVM, который и используется в 90% проектах). Помимо этого за SQL в шарп-коде бьют, часто кирпичом - используйте EF или работайте через хранимые процедуры в БД.
0
Элд Хасп
Модератор
1066 / 736 / 263
Регистрация: 21.04.2018
Сообщений: 2,750
Записей в блоге: 1
13.11.2018, 10:51 3
Цитата Сообщение от Нужна-помощь Посмотреть сообщение
Кнопка сохранить находится в классе Client.cs(она есть и в MainWindow) но там как я понял уже все норм, нужно в Client.cs дописать.
Я думаю, у Вас проблемы в статическом методе Client.UpdateDate();. Судя по обработчику кнопки
C#
92
93
94
95
96
97
98
99
        private void buttonSaveClient(object sender, RoutedEventArgs e)
        {
            var client = (Client)((Button)sender).Tag;
            if (client.idClients == 0)
                Client.InsertData(client);
            else
                Client.UpdateDate(client);
        }
У Вас должны быть переданы данные в статический метод сохранения.
Проверьте дебагером с 94 строки состояние переменной client и как она передаётся в метод Client.UpdateDate(). Если в ней правильные данные (то есть уже изменённые - те которые надо записать), то обработчик выполняется правильно. Дальше пошагово зайдите в метод и посмотрите что происходит в нём с этими данными.

Так же прислушайтесь к совету freeba - у Вас очень корявые как Xaml так и C#. Лучше переделайте по нормальному, иначе, будут постоянно вылазить какие-то нестыковки, переделки, баги и т.д.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2018, 10:51

Как сделать обычную кнопку в режиме ключа?
Добрый день! Есть кнопка типа Button (решение с ToggleButton не подходит), мне нужно сделать,...

Как сделать неактивную кнопку своего стиля?
&lt;Button Width=&quot;146&quot; Height=&quot;34&quot; Style=&quot;{StaticResource...

Как сделать кнопку активной, после индексации файлов?
У меня есть код с индексацией(запускаю в отдельном потоке) #region Индексация ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru