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

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

22.10.2021, 14:15. Показов 10008. Ответов 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
23.10.2021, 16:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kazbek17 Посмотреть сообщение
И зачем эти лишние телодвижения.
А нет такого файла. Есть общий файл с настройками.
Но, как вариант для ТС - создать отдельный файл с одной строкой подключения.
Но мало ли, в дальнейшем появится необходимость внести в настройки что-то еще...

Добавлено через 2 минуты
Цитата Сообщение от Jim Reinor Посмотреть сообщение
если переместить setting.txt
Он должен лежать рядом с исполняемым файлом, в данном случае.
Добавьте файл setting.txt в проект, и в его свойствах "Копировать в выходной каталог" установите "всегда".
0
 Аватар для Kazbek17
1485 / 939 / 455
Регистрация: 06.02.2012
Сообщений: 2,870
23.10.2021, 16:10
Цитата Сообщение от wizard41 Посмотреть сообщение
Но мало ли, в дальнейшем появится необходимость внести в настройки что-то еще...
И чем ваш класс этим поможет, где динамичность. Каждый раз нужно заходить в код и прописывать условие на новую хотелку?
C#
1
   if ( set.SetLines[ i ] == "[ConnString]\r" )
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
23.10.2021, 17:30
Пока вот так

Пишу реализацию запросов к БД..
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru