Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51

Изменение цвета ячейки dataGridView по условию

01.06.2014, 20:47. Показов 4133. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер) Есть два comboBox, два textBox и dataGridview. Хочу сделать так: При изменении значений комбобоксов заполняю dataGridview и сравниваю значения второго столбца dataGridview со значениями текстбоксов. Если, например, значение ячейки меньше значения текстбокса2 или больше значения текстбокса1, то изменяю цвет ячейки. Делаю это так:

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
private void Form2_Load(object sender, EventArgs e)
        {
 
            ds = new DataSet();
            con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Elena\\Desktop\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            con.Open();
 
            //Адаптер для Operation
            SqlCommand oper_cmd = new SqlCommand("SELECT * FROM dbo.Operation", con);
            oper_adapter = new SqlDataAdapter(oper_cmd);
 
            SqlCommandBuilder operbuilder;
            operbuilder = new SqlCommandBuilder(oper_adapter);
 
            //Адаптер для Patient_condition_index
            SqlCommand index_cmd = new SqlCommand("SELECT Patient_condition_index.ID_index, Patient_condition_index.Name, Patient_condition_index.ID_unit,  Patient_condition_index.Name, Patient_condition_index.Norm_value_upper, Patient_condition_index.Norm_value_lower, (RTRIM(Patient_condition_index.Name)+', '+RTRIM(Patient_index_unit.Name)) AS Full_name FROM dbo.Patient_condition_index, dbo.Patient_index_unit WHERE Patient_condition_index.ID_unit=Patient_index_unit.ID_unit ", con);
            index_adapter = new SqlDataAdapter(index_cmd);
 
            SqlCommandBuilder indexbuilder;
            indexbuilder = new SqlCommandBuilder(index_adapter);
 
       
            oper_adapter.Fill(ds, "Operation");
            index_adapter.Fill(ds, "Patient_condition_index"); //прочитать Patient_condition_index
            con.Close();
 
            try
            {
                con.Open();
                DataTable dt1 = new DataTable();
                oper_adapter.Fill(dt1);
                comboBox1.DisplayMember = "ID_operation";
                comboBox1.ValueMember = "ID_operation";
                comboBox1.DataSource = dt1;
 
                DataTable dt2 = new DataTable();
                index_adapter.Fill(dt2);
                comboBox2.DisplayMember = "Full_name";
                comboBox2.ValueMember = "ID_index";
                comboBox2.DataSource = dt2;
 
 
                textBox1.DataBindings.Add("Text", dt2, "Norm_value_upper");
                textBox2.DataBindings.Add("Text", dt2, "Norm_value_lower");
 
 
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
         
        }

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
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
 
                SqlCommand condition_cmd = new SqlCommand("SELECT Index_measuring_time, Index_value FROM dbo.Operation_condition_index WHERE ID_operation ='" + comboBox1.SelectedValue + "' AND ID_index ='" + comboBox2.SelectedValue + "'", con);
                condition_adapter = new SqlDataAdapter(condition_cmd);
 
                SqlCommandBuilder conditionbuilder;
                conditionbuilder = new SqlCommandBuilder(condition_adapter);
                dt = new DataTable();
                condition_adapter.Fill(dt);
                dataGridView1.DataSource = dt;
 
                //работает некорректно 
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    if (dataGridView1[1, i].Value != null && textBox2.Text != "" && textBox1.Text != "")
                    {
                        if ((Convert.ToInt32(dataGridView1[1, i].Value) > Convert.ToInt32(textBox1.Text)) || (Convert.ToInt32(dataGridView1[1, i].Value) < Convert.ToInt32(textBox2.Text)))
                        {
                            dataGridView1[1, i].Style.ForeColor = Color.Red;
                        }
                    }
                }
 
                dataGridView1.Columns[0].Width = 220;
                dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
 
                dataGridView1.Columns[0].HeaderText = "Время снятия показателя";
                dataGridView1.Columns[1].HeaderText = "Значение";
               
        }
Помогите разобраться, может быть я не в том месте пишу код для изменения цвета ячейки, потому что он работает неправильно, а вот если я его пишу, например, так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void button5_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                if (dataGridView1[1, i].Value != null && textBox2.Text != "" && textBox1.Text != "")
                {
                    if ((Convert.ToInt32(dataGridView1[1, i].Value) > Convert.ToInt32(textBox1.Text)) || (Convert.ToInt32(dataGridView1[1, i].Value) < Convert.ToInt32(textBox2.Text)))
                    {
                        dataGridView1[1, i].Style.ForeColor = Color.Red;
                    }
                }
            } 
        }
то все работает отлично, но я хочу сделать, чтобы цвет менялся при изменении значений комбобоксов, а не по нажатию на кнопку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2014, 20:47
Ответы с готовыми решениями:

Изменение цвета строки в Datagridview по условию в столбце
Доброго дня форумчане. Подскажите как решить такой вопрос: у меня есть dataGridView данные в него загружаются из БД. мне...

Изменение цвета названия файла/папки (либо цвета подсветки)
Привет супер уважаемые супер форумчане!) Очень интересно, есть ли какой-то способ изменить цвет названия файла/папки, либо изменить цвет...

WPF. Изменение цвета ячейки DataGrid по условию
Добрый день, хотел изменить цвет ячейки по условию, но возникает вот такая неприятность :( Вот код XALM : &lt;Window ...

8
Заблокирован
01.06.2014, 22:19
FedorF, а что значит работает некорректно?
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
02.06.2014, 06:45  [ТС]
Ev_Hyper, то есть неправильно выделяет ячейки. Вот смотрите: на первом рисунке все значения в пределах нормы, они ни должны были выделяться цветом, а на втором, наоборот, не все выделились
Миниатюры
Изменение цвета ячейки dataGridView по условию   Изменение цвета ячейки dataGridView по условию  
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
02.06.2014, 06:53  [ТС]
не должны были*
0
Заблокирован
02.06.2014, 10:02
FedorF, странно...Проект не очень секретный? Если вы его прикрепите разобраться будет проще.
Но у меня есть сомнения по поводу Sql-запроса и selectedValue.
Если все же проект прикрепить нельзя, то покажите запросы к БД при изменениях индекса комбобокса - ошибка тут, для подсветки код рабочий.
1
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
02.06.2014, 10:35  [ТС]
Ev_Hyper, проект прикрепила. Да, код для подсветки работает как надо при нажатии на кнопку, тоже думаю, что проблема при изменении значений комбобоксов, но не могу понять, где именно. Спасибо, что откликнулись)
Вложения
Тип файла: rar NewNew.rar (156.7 Кб, 26 просмотров)
0
Заблокирован
02.06.2014, 12:03
FedorF, а как вы БД создавали? т.к пишет:
Code
1
Не удалось прикрепить базу данных, которой автоматически было присвоено имя, к файлу C:\Users\Elena\Desktop\ГОСЫ и ДИПЛОМ\07.04.2014\DB1.mdf. База данных с таким именем уже существует, указанный файл нельзя открыть, или он находится на общем ресурсе UNC.
P.S путь к подключению я изменил на свой, взял DB1.mdf из проекта
C#
1
con = new SqlConnection("Data Source=COMP\\SQLEXPRESS;Initial Catalog=D:\\Database\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
Тогда добавьте строку:
C#
1
2
3
4
5
6
7
     
using System.IO;    
//в событии comboBox_SelectedIndexChanged:
string query = "SELECT Index_measuring_time, Index_value FROM dbo.Operation_condition_index WHERE ID_operation ='" + comboBox1.SelectedValue + "' AND ID_index ='" + comboBox2.SelectedValue + "'"
 SqlCommand condition_cmd = new SqlCommand(query, con);
 
          File.AppendAllText(@"C:\Log.txt", query + "\r\n");
протестируйте несколько случаев и покажите что сохранилось в файл
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
02.06.2014, 12:13  [ТС]
Ev_Hyper, вот
Вложения
Тип файла: txt Log.txt (6.7 Кб, 9 просмотров)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.06.2014, 21:56
Привязанные textBox'ы содержат старые значения (от предыдущего выбора). С задержкой реагируют. Не нужно брать из них данные. Бери прямо из таблиц.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2014, 21:56
Помогаю со студенческими работами здесь

Изменение цвета кнопки [не ячейки] в DataGridView
Здраствуйте, скажите пожалуйста, как изменить цвет кнопки standart, созданой в ячейке datagridview, событие на клик сделал и текст меняется...

Изменение цвета части ячейки DataGridView
Добрый день! Столкнулся с необходимостью разукрасить ячейку DataGridView в три цвета (три backcolor). Серфинг в интернете ничего не...

Изменение цвета ячейки в dataGridView, при нажатии на неё
Есть функция: private void ColumnColor_CellClick(object sender, DataGridViewCellEventArgs e) { ...

Изменение содержимого одной ячейки Datagridview после изменения другой ячейки
Здравствуйте. Есть Datagridview с 2 столбцами. Столбцы типа ComboBox. В 1 столбце уже забиты значения, 2 столбец пустой. Необходимо сделать...

DataGridView смена цвета ячейки
Есть элемент dataGridView, при клике на ячейке ячейка должна изменить цвет свого фона. Когда запускаю событие с помощю стороннй кнопки...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru