Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/43: Рейтинг темы: голосов - 43, средняя оценка - 4.56
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280

DataGridView "Строки нельзя программным способом добавить в коллекцию строк DataGridView"

22.10.2021, 14:15. Показов 9496. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке добавить в DGV данные из Textbox появляется ошибка "Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным." в строке dataGridView1.Rows.Add();

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ACS_MAR_Nigma
{
    public partial class Form2 : Form
    {
        Form1 fgrid1;
        public Form2(Form1 f1)
        {
            InitializeComponent();
            this.fgrid1 = f1;
        }
 
        //Добавить оборудование в таблицу
        private void button1_Click(object sender, EventArgs e)
        {
            fgrid1.dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text);
 
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2021, 14:15
Ответы с готовыми решениями:

Заполнять DGV через textBox: Строки нельзя программным способом добавить в коллекцию строк DataGridView
Доброй ночи. У меня есть база данных (встроенная которая, отоброжается она в dataGridView) и мне нужно ее заполнять с textBox-ов. ...

Вставка строк в datagridview программным способом + сортировка
Есть одна таблица (table). Есть datagridview, в которую я вывожу данные о строке, можно назвать карточкой клиента (card1). Порядок строк...

DataGridView. Нельзя программным способом добавить в коллекцию строк, если контрол привязан к данным
Нуждаюсь в помощи. Появляется ошибка "Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления...

72
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kazbek17 Посмотреть сообщение
И зачем эти лишние телодвижения.
А нет такого файла. Есть общий файл с настройками.
Но, как вариант для ТС - создать отдельный файл с одной строкой подключения.
Но мало ли, в дальнейшем появится необходимость внести в настройки что-то еще...

Добавлено через 2 минуты
Цитата Сообщение от Jim Reinor Посмотреть сообщение
если переместить setting.txt
Он должен лежать рядом с исполняемым файлом, в данном случае.
Добавьте файл setting.txt в проект, и в его свойствах "Копировать в выходной каталог" установите "всегда".
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
23.10.2021, 16:10
Цитата Сообщение от wizard41 Посмотреть сообщение
Но мало ли, в дальнейшем появится необходимость внести в настройки что-то еще...
И чем ваш класс этим поможет, где динамичность. Каждый раз нужно заходить в код и прописывать условие на новую хотелку?
C#
1
   if ( set.SetLines[ i ] == "[ConnString]\r" )
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:16
Цитата Сообщение от Kazbek17 Посмотреть сообщение
И чем ваш класс этим поможет, где динамичность.
Kazbek17, в данном случае мы работаем только с БД, и мы это знаем!
Если в будущем появится необходимость в дополнительных настройках, то конечно само приложение будет о них знать. Соответственно они появятся в файле.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 16:17  [ТС]
"Копировать в выходной каталог" флаг установил, теперь и в Bin/Debug, и в проекте.

Все равно - "Ключевое слово не поддерживается"

Мне кажется, что слишком уж перебор - писать в теме за меня всю мою работу и подгонять за меня проект под мои требования - это слишком избыточно, сложно и долго, так как у меня своя БД,

в примере нужно просто было сделать маленькую таблицу в БД с текстовыми данными, колонки на 3, выгрузить подключением ее в DataGridView, и к ней кнопку вставки/добавления/удаления, вызывающие соответствующую форму с 3 TextBox, которая бы видела DataGridView, проделывала бы операцию и валидировала(сохраняла) изменения DGV в БД -

и этого маленького примера 3 колонками этого хватило выше крыши, а я бы расширил и интегрировал под себя.

Товарищ из соседней темы попытался сделать что-то подобное, пример рабочий, но одна беда, у него в примере DGV работает не с БД, а наполнялся в процессе работы текстом, вводимых с формы вставки/обновления, а сами колонки задавались через код (название и тип входных данных). Поэтому интегрировать под задачу с БД это не вышло.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:30
Цитата Сообщение от Kazbek17 Посмотреть сообщение
C#
1
if ( set.SetLines[ i ] == "[ConnString]\r" )
Это конкретный параметр "Строка соединения". Что вам тут не нравится? И зачем заходить в код?

Добавлено через 1 минуту
Цитата Сообщение от Jim Reinor Посмотреть сообщение
и для примера этого хватило выше крыши
Ну понятно, ладно. Как сделаю что-то подобное, выложу

Добавлено через 11 минут
Jim Reinor,
Класс Setting полностью:
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
using System;
using System.IO;
using System.Text;
 
namespace DataBaseMsSql.Core
{
    class Setting
    {
        public string[] SetLines { get; set; }
        public int ResultValue { get; private set; }
 
        // Путь до файла настроек
        readonly string SettingFilePath = Environment.CurrentDirectory + @"\setting.txt";
 
        public Setting()
        {
            ReadSettings( SettingFilePath );
        }
 
 
        private void ReadSettings( string path )
        {
            string lines;
            try
            {
                using ( StreamReader reader = new StreamReader( path, Encoding.Default ) )
                {
                    lines = reader.ReadToEnd();
                }
                SetLines = lines.Split( '\n' );
                ResultValue = 0;
            }
            catch ( Exception e )
            {
                ResultValue = -1;
            }
        }
    }
}
Класс Form1:
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
    public partial class Form1 : Form
    {
        Setting set = new Setting();
        SQL sql;
 
 
        public Form1()
        {
            InitializeComponent();
            label1.Text = set.ResultValue == 0 ? "Настройки прочитаны успешно" : "Ошибка чтения файла настроек!";
 
            // Ищем строку подключения в настройках
            string connstr = "";
            for ( int i = 0; i < set.SetLines.Length; i++ )
                if ( set.SetLines[ i ] == "[ConnString]\r" )
                {
                    connstr = set.SetLines[ i + 1 ];
                    break;
                }
 
            // Подключаемся к БД
            sql = new SQL( connstr );
 
            // Проверяем на открытие БД
            label2.Text = sql.CheckConnection() == 0 ? "Подключение к БД - выполнено" : "Подключение к БД - Ошибка!";
        }
    }
Сделайте так и проверьте считывание файла настроек.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 16:39  [ТС]
Ладно. Если еще в силах, то я подожду маленький демо пример

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

В примере нужно просто было сделать маленькую таблицу в БД с текстовыми данными, колонки на 3, подключить БД не в коде, выгрузить таблицу в DataGridView, и к ней кнопку вставки/добавления/удаления, вызывающие соответствующую форму с 3 TextBox, которая бы видела DataGridView, проделывала бы операцию и валидировала(сохраняла) изменения DGV в БД.

Я хотел бы именно что-то такое для примера с правильной работой функцией, а не так, чтобы писали в теме за меня всю мою работу и подгонять за меня проект под мои требования.
Миниатюры
DataGridView "Строки нельзя программным способом добавить в коллекцию строк DataGridView"  
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 16:42  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Сделайте так и проверьте считывание файла настроек.
Я решил так не делать и откатиться к старой версии. Перестройка проекта с нуля с рекомендациями избыточна для меня и в итоге перемешивает понятное в множество ошибок и вопросов, тем более что она не совсем 1 в 1, а со своей БД, созданной не в VS C#, в которой у меня не одна таблица, но методы редактирования для всех таблиц одинаковы.

Хотелось бы на основе маленького примера на картинке сделать работу, а не за меня с нуля, мне так легче будет понять, и другим тоже, универсальность примера позволяет редактировать его под любую подобную задачу, будь там хоть 10 колонок с данными и 10 таблиц.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:49
Jim Reinor, вы хотели вынести строку подключения из кода - это же довольно просто.
По по поводу остального - мне же для примеров тоже надо создать проект с БД...

Добавлено через 3 минуты
Цитата Сообщение от Jim Reinor Посмотреть сообщение
а не за меня с нуля
Так никто и не создает проект за вас с нуля - вам всего лишь нужно встроить в свой проект то или иное.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 16:50  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
вы хотели вынести строку подключения из кода - это же довольно просто.
По по поводу остального - мне же для примеров тоже надо создать проект с БД...
Ну да, хотел вынести строку подключения из кода, чтобы не пришлось при переезде сервера заново приложение компилировать.
И чтобы вставка/обновление/удаление успешно работали через формы, с таблицей в DataGridView и сохранялись(валидировались).
Для этого достаточно не переделывать мою работу, а маленького примера, но подобное не могу найти в статьях из Интернета, там либо нет всего кода, либо детали реализации скрыты, из за чего сложно повторить и реализовать.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:51
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Ну да, хотел вынести строку подключения из кода, чтобы не пришлось при переезде сервера заново приложение компилировать.
Ну а почему вы бросили эту затею?
Давайте разберемся с этим вопросом.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 16:51  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Так никто и не создает проект за вас с нуля - вам всего лишь нужно встроить в свой проект то или иное.
Без предложенных файлов Settings, SQL, через App.Config точно никак не выйдет реализовать подключение, и в коде обработку информации из БД через сетку и формы?

У меня получалось подключение, но зато никак - работа с данными в таблице, набор данных не был виден и подключить его не получалось.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 16:59
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Без предложенных файлов Settings, SQL
Хых, ну это просто я раскидал функционал по классам. Выдерните от туда нужный код и вставьте в свой. Я просто не привык валить все в одну кучу, как у вас в класс Form1.

Добавлено через 4 минуты
Jim Reinor, вы просто торопитесь. Не закончив одного приступаете к другому. Я вам предложил метод последовательного решения поставленной задачи.
Ну да ладно. Я как оформлю у себя гриды и процедуры работы с БД, так скину примеры.
Сегодня не обещаю, на всякий случай.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 17:13  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Ну да ладно. Я как оформлю у себя гриды и процедуры работы с БД, так скину примеры.
Сегодня не обещаю, на всякий случай.
Ладно, подожду. Если пример вроде того, что на картинке и с БД SQL Server с таблицей из 3 колонок будет работать, то думаю задача будет полностью решена.
А если интеграция примера под свою область не получится, то тогда проверим, что в итоговом варианте не сходится.
Но должно получиться, задача механическая по сути.

А насчет функционала по классам - у меня осталась привычка с начала учебы - вваливать как можно больше в главный класс формы, хоть это и не по ООП)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 17:30
Пока вот так

Пишу реализацию запросов к БД..
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 17:50
Jim Reinor, оставляем ваш DataSet или можно все таки переделать на мой вариант с классом ?
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 18:34  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Jim Reinor, оставляем ваш DataSet или можно все таки переделать на мой вариант с классом ?
Делайте с нуля, как Вам удобно, вообще не нужно смотреть на мои данные, достаточно всего 3 столбцов с цифровыми и текстовыми данными (1 с цифрой 2 с текстом) и тех трех форм с 3 TextBox, как на картинке.
Главное - универсальность примера для таких типовых задач и проблем с обработкой данных в DGV через форму и валидацией (сохранением) изменений в БД.

Пример все же маленький и учебный, и предназначен для всех, кто его найдет в поиске, если у него будет проблема с взаимодействием с DataGridView и решит ее, прошив алгоритм от примера под обработку своих данных, и все получится)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 18:46
Jim Reinor, долго отвечали возвращаю из запросов SELECT тип DataSet. Оставим пока.

Добавлено через 7 минут
Метод запросов к БД возвращает различные данные, в зависимости от запросов.
Поэтому нужные приводим к соотв. типу:
C#
1
2
3
// Читаем всю таблицу
DataSet ds = ( DataSet ) sql.DBActions( "SELECT * FROM [Equipment]" );
dataGridView1.DataSource = ds.Tables[ 0 ];
Добавлено через 1 минуту
Сам метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public object DBActions( string querry )
        {
            string que = querry.Split( ' ' )[ 0 ].ToLower();
            switch ( que )
            {
                case "select":
                    {
                        DataSet ds = new DataSet();
                        SqlDataAdapter da = new SqlDataAdapter( querry, connect );
                        da.Fill( ds );
                        return ds;
                    }
                case "insert":
                    {
                        SqlCommand cmd = new SqlCommand( querry, connect );
                        return cmd.ExecuteNonQuery();
                    }
            }
            return null;
        }
Добавлено через 32 секунды
Пока только два типа запроса. Остальные позже.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 18:54  [ТС]
Хорошо бы потом, кроме выжимок из кода, залить проект в rar или zip и прикрепить вложением в тему)

Мне и остальным, ищущим типовое решение таких задач на примере, удобно было бы посмотреть реализацию всех элементов)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
23.10.2021, 18:56
Цитата Сообщение от Jim Reinor Посмотреть сообщение
залить проект
Залью, а че делать то )
Когда общий функционал будет готов.
Я привожу выжимки, в виду того, что может быть вы что-то правите у себя.
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 19:14  [ТС]
Я пока не могу править проект - сейчас я не дома, и за чужим компом)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2021, 19:14
Помогаю со студенческими работами здесь

Строки нельзя добавить в коллекцию строк DataGridView, если элемент управления привязан к данным
Здравствуйте, столкнулся с такой проблемой, привязал datagridview к базе данных access. Теперь нужно заполнять таблицу введенными с...

"Строки нельзя добавить в коллекцию строк DataGridView, если элемент управления привязан к данным"
Привязал базу access к DataGridView1, таблицу открыло, всё нормально. Мне надо чтобы по нажатию кнопки в таблице создавалась новая строка и...

Добавить строки DataGridView в коллекцию
мне надо получить строки из конкретного столбца в коллекцию, я делаю вот так, а что дальше? dgv.Columns. там не отображается ни одного...

Добавить элемент в коллекцию привязанную к DataGridView
Открываю форму с таблицей DataGridView, если в коллекции есть данные то они отобразятся в таблице и будут обновляться, но если данных нет,...

Ошибка "Исключение в DataGridView" при попытке добавить таблицу в DataGridView. Значения по умолчанию новой строки
Вероятностно у меня где-то ошибка в присвоении заголовкам таблицы типов данных. using System; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru