Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/104: Рейтинг темы: голосов - 104, средняя оценка - 4.64
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136

Как добавить записи в новую строку dataGridView ?

10.04.2015, 22:54. Показов 20737. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в следующем: Загружаю я таблицу с ms access на свою форму в dataGridView. Текст введенный в textBox-ы я присваиваю в одну строку dataGridView, но этот текст программа не сохраняет в таблицу в access (выдает ошибку). А если я ввожу текст прямо в dataGridView то все сохраняется.
вот код:
C#
1
2
3
4
5
6
dataGridView1.Rows[count].Cells[1].Value = textBox1.Text;
            dataGridView1.Rows[count].Cells[2].Value = textBox2.Text;
            dataGridView1.Rows[count].Cells[3].Value = textBox3.Text;
            dataGridView1.Rows[count].Cells[4].Value = textBox4.Text;
            this.задержанныеTableAdapter.Update(this.тестDataSet4.Задержанные);
// count - это число заполненных строк
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2015, 22:54
Ответы с готовыми решениями:

Добавить новую строку в DataGridView
Добрый день! У меня такая проблема: имеется обект DataGridView, с приявязанной к нему базой данных. Мне нужно добавить новую строку и...

Работа с файлами. Как добавить переход на новую строку при записи?
Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.»,...

Как сохранить новую строку DataGridView в БД?
Помогите у меня есть скрипт который вывод в datagridview данные из бд а как мне сделать чтобы они сохранялись в БД если я добавил новую с...

18
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
10.04.2015, 23:31
Код для записи в новую строку

C#
1
2
3
4
5
6
7
8
9
Forms Code
{
 
       private void button1_Click(object sender, EventArgs e)
       {
          dataGridView1.Rows.Add(textBox1.Text, textBox2.Text,.........textBoxn.Text);
       }
 
}
0
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136
10.04.2015, 23:51  [ТС]
Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным. ---- выдает такую ошибку

Добавлено через 27 секунд
я хочу узнать, можно ли это как нибудь обойти
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.04.2015, 14:06
Цитата Сообщение от Беноевский Посмотреть сообщение
я хочу узнать, можно ли это как нибудь обойти
Параллельно с занесением в грид добавляйте программно данные непосредственно в БД. Я бы вообще делал добавление только в БД, а грид отразит эти изменения сам.
1
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136
11.04.2015, 17:03  [ТС]
а как это сделать?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.04.2015, 17:39
Лучший ответ Сообщение было отмечено Беноевский как решение

Решение

Цитата Сообщение от Беноевский Посмотреть сообщение
а как это сделать?
Например, так (для файла Access .mdb):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Data.OleDb;
...
        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection aConn = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = путь к БД");
            aConn.Open();
            OleDbCommand bComm = new OleDbCommand();
            bComm.Connection = aConn;
            bComm.CommandText = "INSERT INTO ИмяТаблицы (Поле1, Поле2, Поле3, Поле4) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";
            bComm.ExecuteNonQuery();
            MessageBox.Show ("В таблицу добавлена запись");
            aConn.Close();
            // а здесь пишете строку обновления грида, которая у вас появляется в Form_Load после связывания грида с БД
        }
Это, если делать занесение из текстбоксов в БД, с обновлением грида. Если же параллельное занесение, то строки обновления не надо.

Добавлено через 1 минуту
Для более поздних версий Access меняется поставщик Microsoft.Jet.OLEDB.4.0 на 12.0 и т. д.
2
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136
11.04.2015, 18:26  [ТС]
а как начать записывать со второго столбца? первый столбец у меня id

Добавлено через 1 минуту
поздняя версия это access 2010?

Добавлено через 39 минут
Спасибо
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.04.2015, 18:37
Цитата Сообщение от Беноевский Посмотреть сообщение
а как начать записывать со второго столбца? первый столбец у меня id
Так там и сделана запись со второго столбца. Нумерация в гриде же идет с 0. Я ориентировался на ваш код. То есть Поле1 - это второй столбец в БД и .Cells[1] в гриде. А id, если у вас в БД всё сделано правильно, добавляется автоматически.
Цитата Сообщение от Беноевский Посмотреть сообщение
поздняя версия это access 2010?
7, 10, 13. Я сейчас точно не помню, посмотрите в гугле, для 7 по-моему Microsoft.Jet.OLEDB.12.0, для 10 - 14.0, для 13 - 15.0. И с какой-то версии Jet уже не применяется, а используется ACE. Но, вообще, (ИМХО, конечно) если хотите без проблем работать с БД, сохраняйте ее в формате 2002-2003 (.mdb)
1
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136
11.04.2015, 19:02  [ТС]
можно ли путь сделать динамическим? как в том случае когда я соединяю dataGridView, а то каждый раз менять путь неудобно
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.04.2015, 19:21
Цитата Сообщение от Беноевский Посмотреть сообщение
можно ли путь сделать динамическим?
Вы имеете ввиду путь к базе? Можно сделать текстбокс на форме и вносить туда с клавиатуры путь, перед началом работы с базой.
C#
1
OleDbConnection aConn = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + textBox1.Text + ")";
Можно через OpenFileDialog.
C#
1
2
3
4
5
6
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
             if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string pathBD = openFileDialog1.FileName;
            }
            OleDbConnection aConn = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + pathBD + ")";
1
2 / 2 / 0
Регистрация: 22.04.2014
Сообщений: 136
11.04.2015, 20:25  [ТС]
а как Visual Studio сама связывает с гридом нельзя сделать?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
11.04.2015, 20:40
Цитата Сообщение от Беноевский Посмотреть сообщение
а как Visual Studio сама связывает с гридом нельзя сделать?
Не понял Что имеется ввиду? Процесс подключения через меню грида "Задачи"? Мне кажется через диалог прописать путь будет проще и быстрее. А если вы имеете ввиду вообще процесс соединения и обновления, то, наверно, можно использовать DataSet и DataTable, но в этом я не силен
0
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 32
29.05.2015, 21:11
Спасибо, запись добавить получилось, но из этого вытекает следующий вопрос, как сделать что бы добавленные записи появлялись в этом самом гриде, а то приходиться полностью перезагружать форму для отображения изменений
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
29.05.2015, 21:32
Цитата Сообщение от ilia-95 Посмотреть сообщение
запись добавить получилось,
Если вы добавляли ее кодом из 6-го поста, то там в последнем комментарии написано, что нужно добавить.
0
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 32
29.05.2015, 21:40
Цитата Сообщение от chumich Посмотреть сообщение
Если вы добавляли ее кодом из 6-го поста, то там в последнем комментарии написано, что нужно добавить.
да, все так и сделал, но все же приходиться перезагружать форму
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void button2_Click(object sender, EventArgs e)
        {
            OleDbConnection aConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=IS_Автомойка.mdb");
            aConn.Open();
            OleDbCommand bComm = new OleDbCommand();
            bComm.Connection = aConn;
            bComm.CommandText = "INSERT INTO Клиенты ([Номер авто]) VALUES ('" + textBox1.Text + "')";
            bComm.ExecuteNonQuery();
            MessageBox.Show("В таблицу добавлена запись");
            aConn.Close();
 
            this.клиентыTableAdapter.Update(this.iS_АвтомойкаDataSet.Клиенты);
        }
Добавлено через 4 минуты
Цитата Сообщение от chumich Посмотреть сообщение
Если вы добавляли ее кодом из 6-го поста, то там в последнем комментарии написано, что нужно добавить.
Все, извиняюсь, ошибку свою нашел, Update заменил на Fill.
Не подскажете, как теперь добить запись с другой формы, ругается как раз на это
C#
1
 this.клиентыTableAdapter.Fill(this.iS_АвтомойкаDataSet.Клиенты);
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
29.05.2015, 21:45
Цитата Сообщение от ilia-95 Посмотреть сообщение
Не подскажете, как теперь добить запись с другой формы, ругается как раз на это
Что вы имеете ввиду? У меня нет вашего проекта, чтобы понять о чем речь .
0
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 32
29.05.2015, 21:51
Цитата Сообщение от chumich Посмотреть сообщение
Что вы имеете ввиду? У меня нет вашего проекта, чтобы понять о чем речь .
Имеется форма клиенты, заносить нового клиента хотелось бы с другой формы. Прикрепляю проект, ругается в форме "Оформление"
Вложения
Тип файла: rar ИС_Автомойка.rar (1.03 Мб, 58 просмотров)
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
29.05.2015, 22:48
Цитата Сообщение от ilia-95 Посмотреть сообщение
ругается в форме "Оформление"
Естественно. this - это понятие активной в данный момент формы. У вас активная - Оформление, а строка
C#
1
this.клиентыTableAdapter.Fill(this.iS_АвтомойкаDataSet.Клиенты);
относится к первой. Это во-первых. Во вторых, у вас вроде обновляется таблица Клиенты, а прописано там было что-то совсем другое.
Попробуйте сделать следующее:
В первой форме дополните код первой кнопки:
C#
1
2
3
4
5
6
        private void button1_Click(object sender, EventArgs e) //Вызов формы оформления нового клиента
        {         
            Оформление f4 = new Оформление();
            f4.Owner = this;
            f4.ShowDialog();
        }
В форме Оформление добавьте в начало кода первой кнопки:
C#
1
Form1 main = this.Owner as Form1;
а в строке обновления замените this на main:
C#
1
main.клиентыTableAdapter.Fill(main.iS_АвтомойкаDataSet7.Клиенты);
Программа будет ругаться на уровень защиты, поэтому зайдите в свойства элементов "клиентыTableAdapter" и "iS_АвтомойкаDataSet7.Клиенты"(право й кнопкой мыши по ним и в появившемся меню - Свойства) и в свойстве Modifiers каждого из них поменяйте Private на Public.
У меня, похоже, проект открылся некорректно, поэтому добавлялся только номер машины. Думаю, у вас всё должно сработать.
1
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 32
29.05.2015, 22:57
chumich, Огромное спасибо за помощь, все заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2015, 22:57
Помогаю со студенческими работами здесь

Как в ComboBox добавить новую строку?
Кто нибудь знает как в ComboBox добавить новую стоку так, что бы при выходе из программы введеные новые сторки сохранялись в ComboBox. И...

Как добавить перевод на новую строку?
Form2.txt1.Text = z.x & vbtab & z.y & vbtab & 0 Так чтобы не заменяясь писалось на новой строке.

Как добавить новую строку в CString?
Здравствуйте, уважаемые форумчане! Как в CString добавить новую строку?

Как добавить новую строку в DBGrid?
как добавить новую строку в DBGrit? Добавлено через 3 минуты я пробовал так, не получается if DataModule4.ADOQuery1.Modified then...

При нажатии на одной из записи в первом DataGridView открыть новую форму с другим DataGridView
Здравствуйте,форумчане. Нужна Ваша помощь.Суть такова... у меня есть форма с DataGridView(список товаров) и есть вторая форма с др...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru