Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/30: Рейтинг темы: голосов - 30, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
1

DataGrid изменение и удаление строк

18.03.2010, 14:24. Показов 6265. Ответов 8
Метки нет (Все метки)

Не очень давно начал учить C# потому просьба строго не судить

Ситуация такова, я создал таблицу в MS SQL ManagementStudio, прикрутил её к DataGrid и для удобства добавил ещё BindingNavigator. В таблице есть некоторые данные, мне надо сделать банальные вещи:
- удалить строку
- изменить строку
И вот именно это никак не удаётся.

Пробовал вот так:
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
private void btn_exit_Click(object sender, EventArgs e)
        {
            try
            {
                this.Validate();
                this.namesBindingSource.EndEdit();
 
                SqlDataAdapter adapter = new SqlDataAdapter();
 
                // Create the DeleteCommand.
                SqlCommand command = new SqlCommand("DELETE FROM names WHERE id = @id", conn);
 
                // Add the parameters for the DeleteCommand.
                SqlParameter parameter = command.Parameters.Add("@id", SqlDbType.NChar, 5, "id");
                parameter.SourceVersion = DataRowVersion.Original;
                adapter.DeleteCommand = command;
 
                this.namesAdapter.Update(this.personalDataSet);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
не работает, на 18 строке пишет для обновления требуется действительный DeleteCommand


потом нашёл в конструкторе наборов данных параметры для TableAdapter, выставил там для DeleteCommand запрос типа:
SQL
1
DELETE FROM names WHERE id = @id
тоже не заработало, написал что <в параметризированном запросе не определён параметр "@id">, а как определить какую именно строку я хочу удалить? Без условия всё работает, но удаляются все строки.

Объясните пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2010, 14:24
Ответы с готовыми решениями:

Удаление/Восстановление строк в DataGrid
С помощью этого кода обнуляю все строки в DataGrid pBDataSet.Tab1.Clear(); Вопрос, а как теперь их...

Добавление, изменение и удаление строк dataGridView
Добрый вечер, форумчане. Помогите пожалуйста, кто сможет. Ситуация такая: есть форма с объектом...

Удаление строк в DataGrid
При удалении строки в DataGrid, привязанному к Adodc c Recordsource = select...

Добавление, сохранение и удаление строк в DataGrid
Как можно сделать чтоб в datagrid через кнопку можно было удалить выделенную строку или...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
8
Комбайнёр
1590 / 688 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
18.03.2010, 15:01 2
Книга: Сеппа "Ado.Net"
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
18.03.2010, 15:06  [ТС] 3
Цитата Сообщение от MAcK Посмотреть сообщение
Книга: Сеппа "Ado.Net"
За ссылку на книгу, она у меня есть, но вот читать её от корки до корки я не буду, выборочно читал, перечитал MSDN, там сказано что надо в адаптере прописать DeleteCommand, UpdateCommand, что я собственно говоря и делаю. Но не работает, так что будьте добры - укажите где ошибка и куда копать?
0
122 / 104 / 7
Регистрация: 14.02.2010
Сообщений: 263
18.03.2010, 16:02 4
TableMapping, видимо, надо прописать.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
18.03.2010, 16:40  [ТС] 5
Цитата Сообщение от serg42 Посмотреть сообщение
TableMapping, видимо, надо прописать.
А можно пример, как именно попробовал так, но не получилось:

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
                // настраиваем DataAdapter
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = conn.CreateCommand();
                da.SelectCommand.CommandText = "select * from names where id=@id ";
 
                da.InsertCommand = conn.CreateCommand();
                da.InsertCommand.CommandText = "insert into names (id, FirstName, LastName, Brithdate) values (@id, @FirstName, @LastName, @Brithdate)";
 
                da.UpdateCommand = conn.CreateCommand();
                da.UpdateCommand.CommandText = "update names set FirstName=@FirstName, LastName=@LastName, Brithdate=@Brithdate where id=@id";
 
                da.DeleteCommand = conn.CreateCommand();
                da.DeleteCommand.CommandText = "delete from names where id=@id";
                
               DataSet ds = new DataSet();
 
               // описываем сопоставление 
               DataColumnMapping[] dcm = {
               new DataColumnMapping("FirstName", "FirstName"),
               new DataColumnMapping("LastName",  "LastName"), 
               new DataColumnMapping("Brithdate", "Brithdate") 
               };
 
               DataTableMapping dtm = new DataTableMapping("DataTable", "names", dcm);
               da.TableMappings.Clear();
               da.TableMappings.Add(dtm);
               da.Fill(ds, "names");
               dataGridView1.DataSource = ds;
               dataGridView1.DataMember = "names";
 
               da.Update(ds, "names"); //Применяем изменения в DataSet. Изменения в БД не заносятся! Используется сопоставленное имя таблицы.
               ds.AcceptChanges(); // заносим изменения в базу данных
0
Комбайнёр
1590 / 688 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.03.2010, 08:20 6
Сделайте адаптер, датасет и биндингсоурсы через визуальные средства студии, если хотите разобраться, то посмотрите как она создала все эти команды.
Рассказать как делать через студию?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
19.03.2010, 09:40  [ТС] 7
Цитата Сообщение от MAcK Посмотреть сообщение
Сделайте адаптер, датасет и биндингсоурсы через визуальные средства студии, если хотите разобраться, то посмотрите как она создала все эти команды.
Рассказать как делать через студию?
Дык я изначально через студию всё и делал. Меня интересует единственный вопрос, как прикрутить возможность удаления(изменения строк) в DataGrid с сабмитом изменений в БД.
0
Комбайнёр
1590 / 688 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.03.2010, 10:07 8
Adapter.Update([Dateset]);
Adapter.Update([Dateset.TableName]);
0
17 / 17 / 3
Регистрация: 17.02.2010
Сообщений: 211
19.03.2010, 13:45 9
Вот приведу из своей проги кусок кода, обновить и удалить запись:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 // Сохранение внесенных изменений таблицы "Uchastok"
            if (gshoUchDataSet.HasChanges())
                try
                {
                    DataWizardMDB.gshoUchDataSet.UchastokDataTable tab = (DataWizardMDB.gshoUchDataSet.UchastokDataTable)gshoUchDataSet.GetChanges().Tables[0];
                    uchastokTableAdapter.Update(tab);
                    gshoDataSet.AcceptChanges();
                    //dsProviders1.AcceptChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Неудачное обновление", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            else
                MessageBox.Show("Нет записей для изменения", "Изменение записей", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
 
        private void btnRemove_Click(object sender, EventArgs e)
        {
            //Удаление строки из таблицы "Uchastok"
            if (cmRecords.Count > 0) cmRecords.RemoveAt(cmRecords.Position);
            else MessageBox.Show("Нет записи для удаления!", "Удаление записи",MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
база на MySql. Надеюсь єтого будет достаточно
Удачи.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2010, 13:45

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Изменение и удаление строк бд php
&lt;? $conect=mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;&quot;)or die(mysql_error()); mysql_select_db(&quot;doc&quot;); ...

Удаление, изменение, добавление строк в DBGrid
Всем здравствуйте!!! Помогите разобраться Дано: Форма с DBGrid которая отображает одну из...

Удаление и изменение строк в sqlite (применяя sqlite3)
Здравствуйте, я в тупике, поэтому хочу обратиться к вам за помощью. в кратце расскажу о моем...

Изменение ObservableCollection: автоматическое изменение свойства при изменении в DataGrid
Здравствуйте. Имеется коллекция на 35 параметров. Значения 2 главных параметров складываются из...


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

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

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