powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
6 сообщений из 6, страница 1 из 1
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067827
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как выбранные пункты в combobox-ах в datagridview сохранить в dataset. Мне нужно чтобы при выборе/добавлении нового пункта/строки или при удалении выбранной строки происходило постоянное автообновление в dataset. Чтобы я потом из dataset смог изъять количество выбранных пунктов и их id-ишники (для сохранения в БД).

Я попытался сделать вот так но ...
Выдает ошибку: "Операции Update не удалось найти TableMapping["id_Object"] или DataTable "id_Object"."

Код: 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.
        DataSet ds = new DataSet();
        public int PreviousPage { get; set; }
        MySqlDataAdapter adapter;
        readonly string connectionString = "server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;";
        public DataTable Execute(string script)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                DataTable table = new DataTable();
                connection.Open();
                adapter = new MySqlDataAdapter(script, connection);
                adapter.Fill(table);
                return table;
            }
        }

        private void СomboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            if (comboBox1.SelectedValue != null)
            {
                column1.DataSource = Execute($"SELECT id_Object, id_customer, Name_object FROM a_stroy.object where id_customer = {comboBox1.SelectedValue};");
                column1.DisplayMember = "Name_object";
                column1.ValueMember = "id_Object";
            }
        }

        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cbDgv = e.Control as ComboBox;
            cbDgv.SelectedValueChanged -= new EventHandler(CbDgv_SelectedValueChanged);
            cbDgv.SelectedValueChanged += new EventHandler(CbDgv_SelectedValueChanged);
        }

        private void CbDgv_SelectedValueChanged(object sender, EventArgs e)
        {
            dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
            int rows = dataGridView1.Rows.Count;
            var comboBox = (DataGridViewComboBoxEditingControl)sender;
            int rowIndex = comboBox.EditingControlRowIndex;
            var query = $"SELECT id_Object, Name_works FROM a_stroy.words_object where id_Object = {rowIndex}"; // получение данных из combobox 
            column2.DataSource = Execute(query);
            column2.DisplayMember = "Name_works";
            column2.ValueMember = "id_Object";
            Debug.WriteLine(rowIndex);
            Debug.WriteLine(rows);
            
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                DataSet sp_CreateUser = new DataSet("id_Object");
                DataTable sp_CreateUser1 = new DataTable("sp_CreateUser1");
                sp_CreateUser.Tables.Add(sp_CreateUser1); // добавляем таблицу в dataset
                DataColumn nameColumn = new DataColumn("id_Object", Type.GetType("System.String"));
                string mysql = "SELECT * FROM Users";
                connection.Open();
                adapter = new MySqlDataAdapter(mysql, connection);
                MySqlCommandBuilder commandBuilder;
                commandBuilder = new MySqlCommandBuilder(adapter);
                adapter.InsertCommand = new MySqlCommand("id_Object", connection);
                adapter.InsertCommand.CommandType = CommandType.StoredProcedure;
                MySqlParameter parameter = adapter.InsertCommand.Parameters.Add("@id_Object", MySqlDbType.VarChar, 0, "Id");
                parameter.Direction = ParameterDirection.Output;
                adapter.Update(ds, "id_Object");
            }
        Debug.WriteLine(ds, "id_Object");
        }



подскажите в чем ошибка???... помогите пожалуйста исправить)
...
Рейтинг: 0 / 0
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067830
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25,
Уж извините, с датасетами не работал лет 10 и при беглом просмотре ваших бак анализов.
Сложилось впечатление что имхо не совсем верная архитектура.
вы берете датасет (слепок базы) а сомб заполняте с запроса к базе. ( тут уж крест или трусы)
на то он и датасет ( вы создали его, и работате как с базой) толстый клиент, пропала сязь, а вам все равно, инсертитет упдейтите
как по живому, появилась связь , сделаи синхронизацию.
...
Рейтинг: 0 / 0
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067874
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
я это все находил на метаните
https://metanit.com/sharp/adonet/3.5.php

и
https://metanit.com/sharp/adonet/3.6.php
НО
там все это выполняется по нажатию на кнопки, а мне нужно, чтобы все, что связано с добавлением новой строки (выбором нового пункта) или изменением уже выбранного, происходило все на автомате - то есть чтобы мне не пришлось постоянно для обновления кнопки нажимать.

На словах уже много услышал советов, только проблема в том, что я кодить настолько хорошо не умею пока что.
Мне бы кто-то показал в коде как надо сделать.
...
Рейтинг: 0 / 0
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067887
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25,
да все понятно не волнуйся , попробуй comb заполнять из датасета,( не лазить в базу) ( может полегчает)
и вообще формочка открылась, датасет залился из базы, все - это теперь твоя локальная база, мускул можещь забыть, до следующего
обновления.
Да и вообще, зачем тебя потянуло на датасеты, имхо уже не востребованы - кури ОРМы
...
Рейтинг: 0 / 0
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067888
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
я вот здесь в 3ем посте написал ... я вот так пытался - но безуспешно ... потом мне посоветовали через dataset
https://www.cyberforum.ru/windows-forms/thread2818867.html]

и здесь тоже самое в 5м посте
https://www.sql.ru/forum/1335450/kak-opredelit-kolichestvo-vybrannyh-combobox-ov-v-datagridview]
...
Рейтинг: 0 / 0
Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
    #40067900
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
мне нужно то же самое что и здесь
https://metanit.com/sharp/adonet/3.5.php

только здесь происходит все по нажатию на кнопку "добавить" и "сохранить"
а мне нужно чтобы при каждом разе у меня если я выбрал в новой автогенирируемой строке datagridview пункт в combobox-е или изменил его, то у меня происходило автообнолвение
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать автообновление в dataset при осуществлении insert/delete/update в datagridview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]