Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 48

Загрузка данных с mysql в DataGridComboBoxColumn wpf

12.08.2019, 22:38. Показов 1889. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу по загрузке и дальнейшему редактированию с отправкой обратно данных на удалённый mysql сервер, и всё бы ничего, но нужно в паре стобцов сделать выпадающей список из разных таблиц. Т.е. datagrid это одна основная таблица, и для трёх выпадающих combobox столбцов(в закоментированном запросе показана правильная структура, но сам запрос под сомнением) другие таблицы в одной БД. С WPF работаю недавно и пока толкового ответа не нашёл, как бы сделать эту задачу выполнимой, может кто подскажет/покажет/напишет, как это должно работать. Прикрепляю листинг программы, которая работает с чистым datagrid, который сейчас и надо переделать.

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
using System;
using System.Windows;
using System.Windows.Controls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using MySql.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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;
using MySql.Data.MySqlClient;
 
 
namespace conntoSQLServer
{
   
    public partial class MainWindow : Window
    {
        string connectionString;
        MySqlDataAdapter adapter;
        DataTable phonesTable;
 
        
 
        public MainWindow()
        {
            
            InitializeComponent();
 
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
           string sql = "SELECT id, ask, offer, status, name, company, phone, ctime, email, cdate FROM orders";
         /*   string sql = "SELECT o.id, o.ask, o.offer, o.status, o.name, o.company, o.phone, o.ctime, o.email, o.cdate, c.name as city, cl.name as class, rc.name as rclass FROM orders as o INNER JOIN cities as c ON (o.city = c.id) INNER JOIN classes AS cl ON (o.class=cl.id) INNER JOIN rclasses as rc ON (o.rclass=rc.id)"; */
           
            //  string sql2 = "UPDATE orders SET ask = @ask, offer = offer";
            phonesTable = new DataTable();
 
           MySqlConnection connection = null;
            try
            {
                connection = new MySqlConnection(connectionString);
                MySqlCommand command = new MySqlCommand(sql, connection);
                adapter = new MySqlDataAdapter(command);
                
                adapter.Fill(phonesTable);
                phonesGrid.ItemsSource = phonesTable.DefaultView;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
 
        }
 
        private void UpdateDB()
        {
            try
            {
                MySqlCommandBuilder comandbuilder = new MySqlCommandBuilder(adapter);
                adapter.Update(phonesTable);
                
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
 
        private void updateButton_Click(object sender, RoutedEventArgs e)
        {
            UpdateDB();
        }
 
        private void deleteButton_Click(object sender, RoutedEventArgs e)
        {
            if (phonesGrid.SelectedItems != null)
            {
                for (int i = 0; i < phonesGrid.SelectedItems.Count; i++)
                {
                    DataRowView datarowView = phonesGrid.SelectedItems[i] as DataRowView;
                    if (datarowView != null)
                    {
                        DataRow dataRow = (DataRow)datarowView.Row;
                        dataRow.Delete();
                    }
                }
            }
            UpdateDB();
        }
    }
 
}
XAML
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     <DataGrid AutoGenerateColumns="False" x:Name="phonesGrid">
            <DataGrid.Columns>
 
                <DataGridTextColumn Header="Спрос" Binding="{Binding ask}" FontFamily="Arial" Width="120"/>
                <DataGridTextColumn Header="Предложение" Binding="{Binding offer}" Width="140"/>
                <DataGridTextColumn Header="Статус" Binding="{Binding status}" Width="100"/>
                <DataGridTextColumn Header="Имя-Отчество" Binding="{Binding name}" Width="140"/>
                <DataGridTextColumn Header="Компания" Binding="{Binding company}" Width="120"/>
                <DataGridTextColumn Header="Город" Binding="{Binding city}" Width="100"/>
                <DataGridTextColumn Header="Род дей-сти" Binding="{Binding class}" Width="120"/>
                <DataGridComboBoxColumn Header="Р" ItemsSource="{Binding rclass}" SelectedItemBinding="{Binding ask}"  Width="50"/>
                <DataGridTextColumn Header="Телефон" Binding="{Binding phone}" Width="120"/>
                <DataGridTextColumn Header="Время" Binding="{Binding ctime}" Width="110"/>
                <DataGridTextColumn Header="Емейл" Binding="{Binding email}" Width="140"/>
 
            </DataGrid.Columns>
        </DataGrid>
 
        <StackPanel HorizontalAlignment="Center"  Grid.Row="1" Orientation="Horizontal">
            <Button x:Name="updateButton" Content="Обновить" Click="updateButton_Click" />
            <Button x:Name="deleteButton" Content="Удалить" Click="deleteButton_Click" />
        </StackPanel>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2019, 22:38
Ответы с готовыми решениями:

Привязки в DataGridComboBoxColumn WPF
Есть таблица в БД: public partial class Raports { public long ID { get; set; } public string Type { get; set; }...

Загрузка базы данных из MySQL в DataGridView
Хотел загрузить базу данных ....вроде все делал как надо ... но почему-то выходит вот такая ошибка ....

Загрузка данных в datagridview данных из MySql
Доброго времени суток! Проблема такова: есть на форме datagridview, к которому подрубаю таблицу из БД MySql, в гриде есть уже созданные...

3
91 / 65 / 18
Регистрация: 09.12.2015
Сообщений: 211
13.08.2019, 11:09
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//XAML для комбобокса
<StackPanel>
  <DataGrid AutoGenerateColumns="False" Name="myGrid" Margin="10">
     <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=Name}" />             
        <DataGridComboBoxColumn Width="100" x:Name="Gender" 
                    SelectedValueBinding="{Binding Gender, Mode=TwoWay}"  
                    DisplayMemberPath="{Binding Gender}" />
     </DataGrid.Columns>
  </DataGrid>
  <Button Name="ShowPersonDetails"  
          Content="Show Person Details" 
          Width="200" Height="30"  
          Click="ShowPersonDetails_Click" Margin="10" />
</StackPanel>
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
//Реализация Comboboxa
public partial class WPFDataGridComboBox : Window
{
    public List<Employee> Employees { get; set; }
    public List<string> Genders { get; set; }
 
    public WPFDataGridComboBox()
    {
        Employees = new List<Employee>()
        {
            new Employee() { Name = "ABC", Gender = "Female" },
            new Employee() { Name = "XYZ" }
        };
 
        Genders = new List<string>();
        Genders.Add("Male");
        Genders.Add("Female");
 
        InitializeComponent();
        myGrid.ItemsSource = Employees;
        Gender.ItemsSource = Genders;
    }
 
    private void ShowPersonDetails_Click(object sender, RoutedEventArgs e)
    {
        foreach (Employee employee in Employees)
        {
            string text = string.Empty;
            text = "Name : " + employee.Name + Environment.NewLine;
            text += "Gender : " + employee.Gender + Environment.NewLine;
            MessageBox.Show(text);
        }
    }
}
C#
1
2
3
4
5
6
//Модель
public class Employee
{
    public string Name { get; set; }
    public string Gender { get; set; }        
}
0
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 48
13.08.2019, 11:45  [ТС]
BlackEric, Спасибо, немного продвинули меня вперёд. Пока железо горячо, задам ещё один вопрос, не сталкивались ли с задачей загрузки данных из БД в комбобокс? А то весь интернет прошарил, кучу разных советов, но не одного внятного. На данный момент у меня идёт загрузка из БД информации и через Update её сохранение.
0
91 / 65 / 18
Регистрация: 09.12.2015
Сообщений: 211
13.08.2019, 12:04
wpf load data from db to combobox
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2019, 12:04
Помогаю со студенческими работами здесь

Загрузка данных из MySql в DataGrid
Я считываю данные из таблицы таким образом Dim b As Integer = 0 Form1.Sqlcon.Open() Form1.cmd.CommandText =...

Загрузка данных из MySQL в PHP
Как правильно сделать функцию? Не хочется для каждого значения в табличе писать такой код: echo '&lt;select...

Одновременное добавление данных в MySQL таблицу и загрузка файлов
Можно ли сделать так, чтобы по нажатию на кнопку одновременно в таблицу добавлялись данные (POST) и на сервер загружалось несколько...

Загрузка всех файлов директории в базу данных MySQL
Привет всем! Второй день ни как не могу решить задачу, что бы батник выгружал все txt и htt файлы с определенной директории в базу данных...

Парсинг и загрузка CSV файла в базу данных MYSQL
Есть файл CSV с таким форматом данных: 0,Name0,Name_Trans0,price0,small_text0,big_text0 ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru