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

Привязка данных к элементу управления DataGridView в Windows Forms

03.06.2013, 15:00. Показов 4810. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть форма с двумя DataGridView. Сделал по этому примеру: http://msdn.microsoft.com/ru-r... 67b6z.aspx , но там показано, как привязать данные только к одной DataGridView. Вопрос, как привязать данные ко второй DataGridView?

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
40
41
42
43
44
45
46
47
 
         private BindingSource bindingSource1 = new BindingSource();
         public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = bindingSource1;
            GetData("select * from Комната");
        }
 
 
        private void GetData(string selectCommand)
        {
            try
            {
                // Specify a connection string. Replace the given value with a 
                // valid connection string for a Northwind SQL Server sample
                // database accessible to your system.
                string connectionString = @"Data Source=DANIEL-PC\SQLEXPRESS;
                         Initial Catalog=Obshezhitie;
                         Integrated Security=True";
 
                // Create a new data adapter based on the specified query.
                SqlDataAdapter dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
 
                // Create a command builder to generate SQL update, insert, and
                // delete commands based on selectCommand. These are used to
                // update the database.
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
 
                // Populate a new data table and bind it to the BindingSource.
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                bindingSource1.DataSource = table;
 
                // Resize the DataGridView columns to fit the newly loaded content.
                //dataGridView1.AutoResizeColumns(
                   // DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            }
           catch (SqlException)
            {
                MessageBox.Show("");
            }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2013, 15:00
Ответы с готовыми решениями:

Удобная привязка данных в DataGridView
Всем привет! Хотел спросить такой вот вопрос. Дело в том,что очень часто мне приходится разрабатывать програмки примерно такого типа:...

Привязка данных в двух DataGridView
Существует две формы Download и Main. На первой форме мы загружает две таблицы(Оформление и Работа) из базы данных в Baza1DataSet.Затем...

Привязка данных в двух DataGridView
Всем привет! У меня такой вот вопрос: Есть 2 DataGridView. В первый данные вносятся с помощью запроса типа: select id_marka, model,...

10
5 / 5 / 3
Регистрация: 13.04.2010
Сообщений: 34
03.06.2013, 15:56
Вы можете всё это сделать не написав ни строчки кода, с помощью конструктора VS.
Можно так:
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
40
41
42
43
44
45
46
47
48
49
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;
using System.Data.SqlClient;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
        SqlConnection connection;
        SqlDataAdapter adapterView1;
        DataSet dataSet1;
        BindingSource bindingSourceView1;
 
        SqlDataAdapter adapterView2;
        DataSet dataSet2;
        BindingSource bindingSourceView2;
 
        public Form1()
        {
            InitializeComponent();
 
            connection = new SqlConnection(@"Data Source=DANIEL-PC\SQLEXPRESS; Initial Catalog=Obshezhitie; Integrated Security=True"");
            
            adapterView1 = new SqlDataAdapter("select * from Комната", connection);
            dataSet1 = new DataSet();
            adapterView1.Fill(dataSet1, "View");
            bindingSourceView1 = new BindingSource(dataSet1, "View");
 
            dataGridView1.DataSource = bindingSourceView1;
 
 
            adapterView2 = new SqlDataAdapter("select * from Постояльцы", connection);
            dataSet2 = new DataSet();
            adapterView2.Fill(dataSet2, "View_");
            bindingSourceView2 = new BindingSource(dataSet2, "View_");
 
            dataGridView2.DataSource = bindingSourceView2;
 
        }
    }
}
1
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
04.06.2013, 00:11  [ТС]
Благодарю)
0
 Аватар для tesler
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 201
26.07.2013, 14:14
Тorrero11, как это сделать??? когда таблица(DataTable) берет данные не из БД, а программно они загружаются...просто создана таблица и самостоятельно прописаны столбцы...как правильно связать с DataGridView через VS
0
56 / 56 / 14
Регистрация: 06.04.2012
Сообщений: 185
26.07.2013, 18:47
C#
1
dataGridView1.DataSource = _dataTable;
не пробовали такое?
0
5 / 5 / 3
Регистрация: 13.04.2010
Сообщений: 34
26.07.2013, 19:11
Цитата Сообщение от tesler Посмотреть сообщение
Тorrero11, как это сделать??? когда таблица(DataTable) берет данные не из БД, а программно они загружаются...
nike00 прав, указывайте напрямую экземпляр DataTable в качестве источника данных грида, которому, кстати, без разницы откуда загружены данные - из БД или иначе. А bindingSource всего лишь слой между DataTable и гридом.
1
 Аватар для tesler
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 201
26.07.2013, 20:16
Тorrero11, если я так указываю, у меня не находит dataGridView1, красным разукрашивает его, пишет про что-то "локальное", не пойму в чем дело...=( ПОЧЕМУ ТАК???(не оставляйте это без ОТВЕТА, хочу полностью въехать во все происходящее)

А вообще можно без кода: цитата

DataTable можно отображать в элементе управления DataGridView двумя способами:

Если используется DataTable сама по себе, следует просто установить свойство DataSource элемента управления на эту таблицу

Если DataTable входит в ^ DataSet, необходимо установить DataSource на DataSet, а свойство DataMember – равным имени DataTable внутри этого DataSet.
только не знаю, так ли это, попробую позже
0
5 / 5 / 3
Регистрация: 13.04.2010
Сообщений: 34
26.07.2013, 20:53
Цитата Сообщение от tesler Посмотреть сообщение
Тorrero11, DataTable можно отображать в элементе управления DataGridView двумя способами:
Если используется DataTable сама по себе, следует просто установить свойство DataSource элемента управления на эту таблицу
Если DataTable входит в ^ DataSet, необходимо установить DataSource на DataSet, а свойство DataMember – равным имени DataTable внутри этого DataSet.
Без разницы, всё равно источником данных является DataTable.

Решение может быть таким:
Сначала создайте схему DataTable, затем строку этой DataTable , заполните эту строку, поместите её в DataTable , ассоциируйте с гридом. Всё! Удачи!

Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
            #region Создаём схему таблицы
            var ds = new DataSet();
            DataTable dt;
            DataColumn dc;
 
            dt = new DataTable("Uchrs");
 
            dc = new DataColumn("UchrId", typeof(Int16));
            dc.Caption = "Идент.№ учреждения";
 
            dc.AllowDBNull = false;
            dc.AutoIncrement = true;
            dc.AutoIncrementSeed = 1;
            dc.AutoIncrementStep = 1;
            dc.ReadOnly = true;
 
            dt.Columns.Add(dc);
 
            // Объявляем первичный ключ
            //dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };        
            // или так:
            dt.Constraints.Add("PK_uchr", dc, true);
 
            // Столбец "Город"
            dc = new DataColumn("Town", typeof(string));
            dc.Caption = "Город";
            dc.MaxLength = 30;
 
            dt.Columns.Add(dc);
 
            // Столбец "Название"
            dc = new DataColumn("UchrName", typeof(string));
            dc.Caption = "Название учреждения";
            dc.MaxLength = 200;
            dc.AllowDBNull = false;
 
            dt.Columns.Add(dc);
 
            ds.Tables.Add(dt); 
            #endregion
 
            // Создаём строку
            DataRow dr = dt.NewRow();
 
            // Заполняем данными второй и третий столбец (первый- автоинкремент)
            dr[1] = "Москва";
            dr[2] = "Учреждение 1";
 
            //  Помещаем строку в DataTable
            dt.Rows.Add(dr);
 
            // Устанавливаем DataTable источником данных грида
            dataGridView1.DataSource = dt;


PS: DataSet создавать не обязательно, здесь в коде он для примера.

Теперь всякий раз при программном добавлении строк в DataTable, грид автоматически будет обновляться.
0
 Аватар для tesler
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 201
26.07.2013, 21:29
Тorrero11, да у меня в DataSet находится DataTable, который привязан к DataGridView, а так как в DataTable я сам столбцы прописывал, то они у меня и отобразились в DataGridView, а при добавлении строки в DataTable, она должна автоматически отобразиться в DataGridView(как я думаю!), но этого не происходит...и я как бы грешу на то, что как то неправильно привязал...хотя столбцы отображаются...
0
5 / 5 / 3
Регистрация: 13.04.2010
Сообщений: 34
26.07.2013, 21:43
Покажите код.
0
 Аватар для tesler
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 201
26.07.2013, 21:46
Тorrero11, не могу...он у меня не на этом компе... зайди сюда...может поможешь мнеhttps://www.cyberforum.ru/ado-... ost4886956
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2013, 21:46
Помогаю со студенческими работами здесь

Windows Forms DataGridView спрятать столбец
Здравствуйте! Подскажите пожалуйста, можно ли спрятать столбец состояния DataGridView: чтобы в результате DataGridView выглядел...

Привязка данных к DataGridView на связном уровне
Как в результате многотабличного запроса привязать данные к DataGridView без использования DataSet и DataAdapter? Не получается получить...

Привязка данных к уже созданным столбцам DataGridView
у меня вопрос: если я создам в dgv столбцы вручную, пропишу их свойства в правке столбцов, сделаю 1 столбец скрытым и т.д., напишу sql...

DataGridView - привязка свойств строки к источнику данных
Подскажите, пожалуйста, возможно ли осуществить привязку свойств строки(к примеру ReadOnly) к полю в источнике данных с помощью механизма...

Как удалить и изменить данные в базе sqlite через DataGridView (Windows Forms)?
Проблема в следующем: пишу на visual studio 2015, создаю базу sqlite через "Server Explorer -- Data connections -- Add connection" по...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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