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

Связывание datagridviewcombobox с полем в бд

19.04.2013, 18:39. Показов 1255. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Имеется datagridview с колонкой combobox. В этой колонке хранится значение "год" и эта колонка заполняется программно,т.к. год нужно отсчитывать от текущего и на 10 лет назад. Т.е. в этом комбобоксе будут следующие значения 2013,2012,2011,2010,2009...2003. В datagridview есть отдельное поле, в котором тоже хранится год. Необходимо связать эти два поля,чтобы при открытии таблицы в колонке комбобокс уже было выбрано значение,которое записано в таблице в поле Год.
Как посоветуете сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2013, 18:39
Ответы с готовыми решениями:

Связывание кнопки с полем едит
Помогите плиииз. Как связать кнопку "Подтвердить", что бы после ее нажатия закрывалось поле "edit" CreateWindowEx(...

Работа с DataGridViewComboBox
Доброго времени суток! есть DataGridView, все ячейки которых являются DataGridViewComboBox. Таблица организована в 2 колонки. По загрузке...

Использование DataGridViewComboBox
Есть typed DataSet, в нем несколько таблиц! Нужно вывести две таблицы (отношение "один ко многим",которые связаны по ID) в одном...

8
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
19.04.2013, 19:23
писал функцию...
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
#region Функция заполняющая ComboBox датами и ставящаю дату текущего года
 
        public int LoadComboDate(ComboBox comboControl, string ColName)
        {
            ConnectionClass conn = new ConnectionClass();
            string sqlQueryString = "Select * from SprGod order by god";
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQueryString, conn.connectionString))
            {
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                comboControl.DataSource = table;
                comboControl.DisplayMember = table.Columns[ColName].ColumnName;
            }
 
            if (comboControl.Items.Count == 0)
            {
                return 0;
            }
            else
            {
                for (int i = 0; i < comboControl.Items.Count; i++)
                {
                    comboControl.SelectedIndex = i;
                    if (comboControl.Text == DateTime.Now.Year.ToString())
                    {
                        return i;
                    }
                }
            }
 
            return 0;
        }
 
        #endregion
Вернет индекс совпавшего элемента в комбобоксе
в вашем случае строки
C#
1
2
3
4
if (comboControl.Text == DateTime.Now.Year.ToString())
                    {
                        return i;
                    }
будут примерно так:
C#
1
2
3
4
if (comboControl.Text == dataGrid.Rows["Номер строки"].Cells["номер колонки"].Value.ToString();)
                    {
                        return i;
                    }
потом просто ComboBox.SelectedIndex= LoadComboDate(ComboBox, "God");
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
19.04.2013, 19:29  [ТС]
wm_leviathan, тоесть потом надо будет заново проходить по всем строкам,и выполнять такое сравнение?
0
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
19.04.2013, 19:47
а сорь функция не подойдет. я что то подумал что надо в КБ отображать ту дату которая в поле а не наоборот. в принципе функция почти та же только все наоборот будет.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
19.04.2013, 19:51  [ТС]
wm_leviathan, дело в том,что строится таблица через Dataadapter и одно из полей year1,которое и надо завязать на Combobox. Я не совсем понимаю,для чего в представленной Вами функции SQL запрос на выборку года...
0
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
19.04.2013, 20:22
Цитата Сообщение от the_maksimka Посмотреть сообщение
...для чего в представленной Вами функции SQL запрос на выборку года...
просто из проекта копипастил.
по делу: если в комбобокс ячейках одинаковый набор дат то, не все так сложно...
вам надо будет 2 цикла
1й внешний по всему гриду (код цикла прост до безумия приводить его не буду)
и второй по ячейке грида, та что с комбобоксом
C#
1
2
3
4
5
6
7
8
9
            for (int i = 0; i < (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items.Count; i++)
            {
                dataGridView1.Rows[0].Cells[0].Value = (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items[i];
                if (comboBox1.Text == dataGridView1.Rows[0].Cells[0].Value.ToString())
                {
                    dataGridView1.Rows[0].Cells[0].Value = (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items[i];
                    return;
                }
            }
просто ради примера попробывал на нулевой строке. все работает.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
19.04.2013, 21:39  [ТС]
Цитата Сообщение от wm_leviathan Посмотреть сообщение
dataGridView1.Rows[0].Cells[0].Value = (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items[i];
а зачем эту строку два раза?
0
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
19.04.2013, 21:45
достаточно одной строки просто наспех писал вот и тупанул
C#
1
2
3
4
5
6
7
8
 for (int i = 0; i < (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items.Count; i++)
            {
                dataGridView1.Rows[0].Cells[0].Value = (dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).Items[i];
                if (comboBox1.Text == dataGridView1.Rows[0].Cells[0].Value.ToString())
                {
                    return; // остановится когда даты совпадут
                }
            }
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
19.04.2013, 21:57  [ТС]
wm_leviathan, просто перебором не всегда хорошо,и если данных в таблице и комбобоксе очень много-то пробегание по ним в двойном цикле будет занимать время...я думал,может есть какое-то свойство,которое позволяет связать элемент КБ с полем...PropertyName не помогает

Добавлено через 9 минут
А нет, работает. Форумчанин Kodv показал мою ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2013, 21:57
Помогаю со студенческими работами здесь

Зависящие друг от друга Datagridviewcombobox
Есть 2 программно созданных столбца Datagridviewcomboboxcolumn Как сделать чтобы выбор во втором столбце зависел от выбора в первом ...

Как заставить DataGridViewComboBox не ограничиваться списком
Есть DataGridView привязан к таблице tblData, в нем (dgv) есть колонка с dgvComboBox привязанным к другой таблице tblDataSourse, при...

не разобрался с выпадающим полем и с обычным полем
В БД есть 3 поля со списком которые функционируют в зависимости от выбранного значения. Поля со списком работают через связку Ключей-Код. ...

Выяснить, является ли данное множество кольцом (но не полем) и является ли полем, относительно операций сложения и умн
Нужно выяснить, является ли данное множество кольцом ( но не полем ) и является ли полем, относительно операций сложения и умножения

Напишите многочлен, разложимый над полем Z5, но неразложимый над полем Z2
Напишите многочлен, разложены над полем Z5 но не разложимый над полем Z2


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru