Практическое руководство. Изменение данных, отображаемых во время выполнения, в элементе управления DataGrid в Windows Forms
Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.
После создания элемента управления Windows Forms DataGrid с помощью функций времени разработки может также потребоваться динамическое изменение элементов объекта DataSet сетки во время выполнения. Это может быть изменение либо отдельных значений таблицы, либо изменение источника данных, привязанного к элементу управления DataGrid. Изменение отдельных значений выполняется через объект DataSet, а не в элементе управления DataGrid.
Программное изменение данных
- Укажите нужную таблицу из объекта DataSet и нужные строку и поле из таблицы, а затем присвойте ячейке новое значение.
Примечание. Чтобы указать первую таблицу DataSet или первую строку таблицы, используйте значение 0.
В следующем примере показано, как изменить вторую запись первой строки первой таблицы набора данных, нажав кнопку Button1 . DataSet ( ds ) и таблицы ( 0 и 1 ) были созданы ранее.
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ds.tables(0).rows(0)(1) = "NewEntry" End Sub
private void button1_Click(object sender, System.EventArgs e)
private: void button1_Click(System::Object^ sender, System::EventArgs^ e) < dataSet1->Tables[0]->Rows[0][1] = "NewEntry"; >
(Visual C#, Visual C++) Поместите следующий код в конструктор формы для регистрации обработчика событий.
this.button1.Click += new System.EventHandler(this.button1_Click);
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
Изменение источника данных программным способом
- Передайте методу SetDataBinding имя источника данных и таблицу, к которой необходимо выполнить привязку. В следующем примере показано, как с помощью метода SetDataBinding изменить источник данных на элемент управления данными ADO.NET (adoPubsAuthors), подключенный к таблице Authors в базе данных Pubs.
Private Sub ResetSource() DataGrid1.SetDataBinding(adoPubsAuthors, "Authors") End Sub
private void ResetSource()
private: void ResetSource() < dataGrid1->SetDataBinding(adoPubsAuthors, "Authors"); >
См. также
- DataSets в ADO.NET
- Практическое руководство. Удаление или скрытие столбцов элемента управления DataGridView в Windows Forms
- Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
- Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Поставить условие и изменить значение DataGridView cell.value
Задача: поставить ограничения на вводимые данные в ячейки таблицы. Так, чтобы при выходе из ячейки, данные, которые мы ввели туда проверялись и изменялись при необходимости. С некоторой помощью дошел до следующего кода:
private void data1_CellLeave(object sender, DataGridViewCellEventArgs e) < DataGridViewTextBoxCell cell = (DataGridViewTextBoxCell)data1.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (Convert.ToDouble(cell.Value) < (-99)) //с этой строкой ничего не работает cell.Value = -99; >
С if не работает вовсе, без него работает — при выходе из любой ячейки меняются данные на -99 . Что не так с условием if ?
Отслеживать
Agasi Mkhitaryan
задан 2 дек 2015 в 19:06
Agasi Mkhitaryan Agasi Mkhitaryan
7 6 6 бронзовых знаков
а вы проверяли значение Convert.ToDouble(cell.Value)?
2 дек 2015 в 19:44
Нет, но у нее же адрес ячейки, куда я ввожу свои данные для примера.
2 дек 2015 в 19:47
а вы попробуйте проверить
2 дек 2015 в 19:51
Как это правильно сделать?
2 дек 2015 в 19:55
поставить точку остановки на этой строчке и добавить это выражение в панель Watch
2 дек 2015 в 19:58
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Как я понял, проблема в особенности данного события, оно не совсем подходит. Вот рабочий код, если заполнять таблицу вручную, данные фильтруются и исправляются:
private void data1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
В Cellleave событии в качестве cell.value передавалось предыдущее значение ячейки. Т.е. при входе в ячейку ее значение было 5 , мы зашли и изменили значение на -100 , вышли. В cell.value передалось 5 , а не -100 , поэтому ячейка и не очищалась. Для похожих задач используйте событие CellEndEdit или CellValidated (данный код работает идентично в обоих событиях)
Как сменить источник данных dataGridView через код WinForms C#?
Нужно чтобы пользователь мог через Windows Form поменять таблицу в Microsoft Access из которой dataGridView получает данные. Хочу реализовать это через ComboBox, но не могу найти как поменять источник данных dataGridView
- Вопрос задан более года назад
- 258 просмотров
1 комментарий
Простой 1 комментарий

у dataGridView есть DataSource
если помогло — я положу в ответы вы отметите решением
Решения вопроса 0
Ответы на вопрос 2

Владимир Коротенко @firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
1. ищите ваш файл.
2. смотрите где это используется
3. делаете кнопку для смены файла
Ответ написан более года назад
Dreker052 @Dreker052 Автор вопроса
а как это в коде реализовать?

Владимир Коротенко @firedragon

Владимир Коротенко @firedragon
visual studio генерирует весь код, который ты накликал в дизайнере форм, практически ничего за кадром не остается, смотри в файлах проекта они в инспекторе есть
смотри как там прописывается источник данных, и делай так же
p.s. вообще то вопрос что такое сменить источник данных
Источник данных это DataSource, если все создается в дизайнере форм то данные туда заливаются из базы по запросу (а у тебя таблица эксель через adodb подключается как таблица), ну так меняй подключение или запрос, если тот же файл, на событие onchange комбобокса
загрузив новые данные datagrid все подхватит сам
Ответ написан более года назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Как проверять столкновение префаба и UI панели в Unity?
- 1 подписчик
- 2 часа назад
- 13 просмотров
Как обновить данные в DataGridView при нажатии на кнопку?
Здравствуйте! Используется компонент DataGridView для вывод данных из таблицы в проекте. Добавлен через Visual Studio компоненту dataGridView1. Visual Studio автоматически добавила в onload формы: this.visitorsTableAdapter.Fill(this.mainDatabaseDataSet2.visitors); Я добавляю строки в таблицу. И хочу что бы по кнопке обновились данные в dataGridView1. Как это можно реализовать? Если я повторно вызываю этот метод для обновления — данные подгружаются старые.
Отслеживать
9,431 2 2 золотых знака 15 15 серебряных знаков 31 31 бронзовый знак
задан 20 ноя 2017 в 14:01
291 2 2 серебряных знака 12 12 бронзовых знаков