DataGridView Merging
Is it possible to merge 2 seperate DataGridView in C# into one? I am using a two seperate SortableBindingList for each DataGridView .
Here is the code for the first DataGridView called theChipDGV .
Here is the code for the second DataGridView called theDataBaseDGV .
EDIT:
OR
OR
some other way since both of these I do not think will work?
If so, how is this possible?
EDIT2:
However using this only grabs one row and I need to grab every row.. Even if one list is larger than the other I would like to fill in the blank spots..
I tried messing with this:
1 Answer 1
There are a couple of approaches here.
I’m not familiar with the SortableBindingList but you might be able combine your two lists into one and then bind that to a DataGridView. If the fact that the two SortableBindingList s hold different types (one is Chip , the other DataBase ) is a problem you can always create an Interface and have both your types implement it. You can then change the type T in your SortableBindingList s to your interface and then combine and bind this combined list to your DataGridView.
The other approach is to copy the rows in both your DataGridViews into a third DataGridView. I took the example here and created a method which will take a DataGridView and return an array of its DataGridViewRows.
Here’s the method:
You can then use this code to copy the rows into your two DGVs (dataGridView1 and dataGridView2) into a third DGV (dataGridView3).
Note that this method will copy the ’empty’ row added to the DGV is the DGV’s AllowUserToAddRows is true. If this is the case and you don’t want that empty row, size your rowArray to one less than what I show, and test for a new row in the outer for loop for such a row like this:
Also, before you merge make sure your destination DGV has the same number of columns as your source DGVs.
Элемент управления dataGridView
В Microsoft Visual Studio элемент управления dataGridView разработан для использования в приложениях, созданных по шаблону Windows Forms Application . Данный элемент управления позволяет организовывать данные в виде таблицы. Данные могут быть получены из базы данных, коллекции, внутренних переменных — массивов или других объектов программы.
Данный элемент управления аналогичен компоненту TStringGrid в системе визуальной разработки приложений.
Данный элемент размещен на панели инструментов ToolBox во вкладках «All Windows Forms» или «Data» (рисунок 1).
После размещения на форме, система создает объект (переменную) с именем dataGridView1 . С помощью этого имени можно программно оперировать методами и свойствами этого элемента управления.
Рис. 1. Элемент управления dataGridView1 и окно Properties со свойствами
2. Можно ли использовать DataGridView непосредственно без связывания его с базой данных?
Да, можно. В DataGridView данные могут быть получены из базы данных, коллекции, внутренних структур данных (массивов, структур и т.д.).
3. Как программно задать размеры DataGridView ? Свойства Width , Height
Для задания размеров DataGridView используются свойства Width и Height .
4. Какие виды данных могут быть представлены в ячейках DataGridView ?
Виды данных, которые могут быть представлены в ячейках dataGridView :
- dataGridViewButtonColumn . Ячейки представлены в виде кнопок типа Button ;
- dataGridViewCheckBoxColumn . Ячейки представлены элементами управления типа CheckBox , которые позволяют выбирать несколько вариантов (опций) из набора предложенных;
- dataGridViewComboBoxColumn . Ячейки представлены элементами управления типа ComboBox , предназначенных для выбора одного из нескольких вариантов;
- dataGridViewImageColumn . Ячейки таблицы есть изображениями типа Image;
- dataGridViewLinkColumn . Ячейки таблицы представлены ссылками;
- dataGridViewTextBoxColumn . Этот вариант предлагается по умолчанию при добавлении (создании) нового столбца. В этом случае ячейки таблицы представлены в виде полей ввода. Это позволяет вводить данные в таблицу как в матрицу.
5. Добавление столбца программным путем
Добавить столбец в dataGridView можно:
- с помощью специального мастера;
- программным путем.
Столбцы в dataGridView организованы в виде коллекции Columns типа DataGridViewColumnCollection. Чтобы добавить столбец программным путем используется метод (команда) Add из коллекции Columns.
Метод Add имеет 2 варианта реализации:
- DataGridViewColumn – тип System.Windows.Forms.Column который добавляется;
- ColumnName – название, по которому будет осуществляться обращение к столбцу из других методов;
- HeaderText – текст, который будет отображаться в заголовке столбца.
Фрагмент кода, который добавляет два произвольных столбца следующий:
В реальных программах название столбца и его заголовка получаются из других элементов управления, например TextBox .
Для вставки столбца используется метод Insert , который имеет следующее объявление
Вызов этого метода из программного кода аналогичен методу Add .
6. Как программно реализовать удаление столбца? Методы Remove() и RemoveAt()
Чтобы удалить столбец используется один из двух методов из коллекции Columns :
- метод RemoveAt() – удаляет столбец по заданному индексу в коллекции;
- метод Remove() – удаляет столбец по его имени.
Общий вид метода RemoveAt() :
- index – заданный индекс в коллекции. Индексы нумеруются с 0.
- ColumnName – название столбца (но не название заголовка столбца), которое задается в методе Add() первым параметром. Столбцы в коллекции могут иметь одинаковые значения ColumnName . Если при вызове метода Remove() , столбца с именем ColumnName нет, то генерируется исключительная ситуация.
Фрагмент кода удаления столбца с помощью метода RemoveAt() :
7. Программное добавление строки. Метод Add()
Добавлять строку можно одним из двух способов:
- путем непосредственного ввода с клавиатуры;
- программным путем.
Строки в DataGridView организованы в виде коллекции Rows типа dataGridViewRowCollection .
Ниже приведен фрагмент метода, добавляющего 2 произвольные строки в таблицу
8. Программное удаление строки. Методы Remove() и RemoveAt()
Для удаления строки используется один из двух методов:
- метод RemoveAt() – удаляет строку по заданному индексу;
- метод Remove() – удаляет строку, которая есть входным параметром типа DataGridViewRow.
Фрагмент кода удаления строки имеет вид:
9. Задание текста заголовка в заданном столбце программным путем
Чтобы задать текст заголовка в заданном столбце используется свойство HeaderText . Фрагмент кода установки текста заголовка в столбце с индексом 0 имеет вид:
10. Установка выравнивания заголовка в заданном столбце программным путем
Выравнивание заголовка в столбце задается с помощью свойства HeaderCell.Style.Alignment .
Фрагмент кода установки выравнивания в заголовке столбца с индексом 0:
11. Установка шрифта заголовка в столбцах программным путем
Для установки шрифта в заголовках столбцов используется свойство ColumnHeadersDefaultCellStyle . В этом свойстве используется свойство Font .
Во фрагменте кода создается шрифт Arial , имеющий размер 12 и курсивное начертание.
12. Установка цвета шрифта заголовков программным путем
Чтобы задать цвет шрифта заголовков программным путем нужно использовать свойство ColumnHeaderDefaultCellStyle . В этом свойстве есть свойства ForeColor и BackColor .
C Sharp две связанные таблицы и два dataGridView
Есть две связанные таблицы (связь одна ко многим). На форме есть два dataGridView. Необходимо в dataGridView1 показывать строки первой таблицы, а в dataGridView2 связанные строки из второй таблицы.
Другими словами первая таблица "Организации", а вторая таблица "Сотрудники". Если установить курсор на строке в dataGridView1 то в dataGridView2 должны показываться сотрудники этой организации.
RPI.su — самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected] . Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.
Как связать 2 datagridview c
DataGridView — стандартный GUI компонент для отображения и редактирования таблиц. Здесь коротко рассмотрены основные моменты работы с этим классом.
Перекиньте стандартным способом в форму компонент DataGridView.
Источник данных при создании можно не указывать, так как DataGridView позволяет хранить данные внутри себя и добавлять/удалять их на лету, во время выполнения (runtime). После этого редактором свойств настройте поведение по умолчанию нового экземпляра DataGridView. Я обычно меняю свойства AllowUserToAddRows на false, AllowUserToDeleteRows на false, ReadOnly на true. Можно также переименовать экземпляр из dataGridView1 в что-нибудь более осмысленное, подходящее для Вашей программы.
Добавление строк и столбцов. Столбцы и строки можно добавлять во время выполнения программы (подробнее см. [1]). Пример добавления строк:
Однако если назначение и структура таблицы (количество и наименование столбцов) известны заранее, то можно редактором свойств добавить столбцы. Для этого редактируют свойство Columns.
Стиль текста заголовка. Пример, как можно установить жирный шрифт в заголовке таблицы:
Как поменять цвет фона заголовка и цвет шрифта:
Работа с ячейками. Обращение к ячейкам DataGridView довольно простое. Индексация столбцов (Columns) и строк (Rows) идет относительно нуля. Столбец с индексом 0 самый левый, и строка с индексом 0 самая верхняя. Количество строк можно получить через свойство RowCount. Добавляются строки методом Удаляются строки методом Rows->Add(), удаляются методом Rows->RemoveAt(номер строки). Пример добавления и удаления строк:
Более простой способ удаления строк:
Текущая строка. Узнать номер текущей строки можно через HitTestInfo->RowIndex:
Установить (поменять) текущую строку можно через свойство CurrentCell (в примере устанавливаем третью текущую строку):
Текущая строка помечена в таблице треугольничком:
Вид таблицы после отмены выделения текущей ячейки:
Изменение данных в ячейках. Менять данные в ячейках таблицы можно только тогда, когда существуют соответствующий столбец и соответствующая строка, иначе произойдет ошибка выполнения («System.ArgumentOutOfRangeException» произошло в mscorlib.dll Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, a его размер не должен превышать размер коллекции.). После добавления строки методом Add все значения в ячейках добавленной строки будут пустые. К ячейке таблицы можно обращаться по номеру столбца и номеру строки через свойство Value.
Пример добавления строк и заполнения таблицы:
Стиль, цвет текста. Внешний вид текста в ячейке можно менять через свойство Style. Пример изменения цвета нужной ячейки на C#:
Пример изменения шрифта ячейки на жирный:
Как обращаться к столбцам не по их индексу, а по имени? Нумерация строк и столбцов начинается с нуля, и когда нам нужно обратиться к конкретной ячейке строки, то это можно сделать через числовой индекс: Rows[индексстроки].Cells[индексстолбца]. Однако есть удобная возможность получить индекс столбца по имени типа столбца:
В этом примере УровеньУст и УровеньСчит — типы столбцов, которые были установлены во время компиляции визуальным редактированием свойства Columns таблицы dgv. Используется свойство Index этих типов.
Клик на заголовке строки. Обработка клика на заголовке строки на C#:
Как удалить последнюю пустую строку?
Ответ: после манипуляции со строками и добавления новых строк установите в false свойство AllowUserToAddRows :