powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Цикл по раскраске dataGridView
25 сообщений из 33, страница 1 из 2
Цикл по раскраске dataGridView
    #38977373
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть грид заполненный datateble, и есть comboBox заполненный через BindingSourse, вот. В гриде юзеры пишут записи, соответственно в 1м столбце остаются их фамилии например, а в comboBox список этих фамилий, и хотелось бы закрашивать строки в гриде по разному в зависимости от юзера.
пытаюсь придумать такой цикл, который будет сравнивать значения, например взял 1й элемент в comboBox, пошёл по гриду нашёл всё такие же равные ему и покрасил в один цвет строки, потом взял 2й элемент в comboBox, нашёл все такие в гриде и окрасил в другой цвет и т.д
Уважаемы ГУРУ, прошу помощи, нету опыта в написании циклов,прогуливал когда то((
знаю что лабуду пишу но пока вот так написал:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
for (int i = 0; i <= dataGridView2.RowCount; i++)
                {
                    for (int j = 0; j <= comboBox6.Items.Count; j++)
                    {
                        if (j == comboBox6.Items.Count) continue;
                        i = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());
                        j = Convert.ToInt32(comboBox6.Items.Count);
                        if (i == j)
                        {
                            dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.BlanchedAlmond;
                        }
                    }
                }


знаю до того что я выше описал ещё много строк...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977378
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wild888Добрый день, есть грид заполненный datateble, и есть comboBox заполненный через BindingSourse, вот. В гриде юзеры пишут записи, соответственно в 1м столбце остаются их фамилии например, а в comboBox список этих фамилий, и хотелось бы закрашивать строки в гриде по разному в зависимости от юзера.
пытаюсь придумать такой цикл, который будет сравнивать значения, например взял 1й элемент в comboBox, пошёл по гриду нашёл всё такие же равные ему и покрасил в один цвет строки, потом взял 2й элемент в comboBox, нашёл все такие в гриде и окрасил в другой цвет и т.д
Уважаемы ГУРУ, прошу помощи, нету опыта в написании циклов,прогуливал когда то((
знаю что лабуду пишу но пока вот так написал:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
for (int i = 0; i <= dataGridView2.RowCount; i++)
                {
                    for (int j = 0; j <= comboBox6.Items.Count; j++)
                    {
                        if (j == comboBox6.Items.Count) continue;
                        i = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());//тут ругается на неверный формат строки, правильно потому что в ячейке Value фамилия 
                        j = Convert.ToInt32(comboBox6.Items.Count);
                        if (i == j)
                        {
                            dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.BlanchedAlmond;
                        }
                    }
                }


знаю до того что я выше описал ещё много строк...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977422
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если прогуливал азы, то нафига оно тебе сдалось?

Я вот одно не пойму, если любой школьник в курсе, что так не делается, то зачем ты занимаешься этим?
Пей пиво, слушай музон...

for (int j = 0; j <= comboBox6.Items.Count; j++)
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977448
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh, на кого учился, там и пригодился и ни когда ни чего не поздно!
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977453
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wild888Winnipuh, на кого учился, там и пригодился и ни когда ни чего не поздно!
да знаки = то я каэшн затроил уже
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977460
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wild888Winnipuh, м.б подскажете,как мне текст в ячейке перевести конвертировать, или что то думается мне что не так надо делать
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977463
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в след. году после восстановление не прогуливайте уроки, тогда и проблем не будет
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977468
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, ну что вы начинаете то...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977484
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888Roman Mejtes, ну что вы начинаете то...потому что он не прогуливал и ему обидно.

Тем не менее, он указал вам на место ошибки - включайте мозг, читайте главу учебника по циклам
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977514
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888Roman Mejtes, ну что вы начинаете то...

монитор еще не треснул от циклов?

Код: c#
1.
2.
3.
for (int j = 0; j <= comboBox6.Items.Count; j++)
                    {
                        if (j == comboBox6.Items.Count) continue;
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977527
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuhwild888Roman Mejtes, ну что вы начинаете то...

монитор еще не треснул от циклов?

Код: c#
1.
2.
3.
for (int j = 0; j <= comboBox6.Items.Count; j++)
                    {
                        if (j == comboBox6.Items.Count) continue;


да у меня уже голова вместе с монитором скоро треснут(((
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977535
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
for (int i = 0; i < dataGridView2.RowCount-1; i++)
{
for (int j = 1; j < comboBox6.Items.Count; j++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString() != null)
{
if (comboBox6.Items.Count.ToString()!=null)
{
i = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());//ошибка, входная строка имела неверный формат, в Value "иванов и.и." где тут собака зарылась?
j = Convert.ToInt32(comboBox6.Items.Count);
if (i == j)
{
dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.BlanchedAlmond;
}
}
else
{
dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
}
}
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977541
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888,
тебе нужно сделать хотя бы в таком виде.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
for (int i=0;i<dataTable.Rows.Count;i++)
{
      try
      { 
         dataGridView.Rows[i].DefaultCellStyle.BackColor = GetColorByUser((int)dataTable.Rows[i]["userID"]);
      } catch {}
}

.....
private const int maxColors = 10;
public Color[] arrayOfColors = new Color[maxColors] {Color.Red, Color.Magenta .....}
public Color GetColorByUserID(int id)
{
    return arrayOfColors[id % maxColors];
}



В userID пихать что угодно, вплоть до itemindex из combobox.
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977641
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris, спасибо вам за помощь) у меня правда в комбо загружается только одно поле с фамилиями, id там нет, НО если я правильно понимаю, можно for (int j = 0; j < comboBox6.Items.Count; j++) и j записать в ["userID"]???нее
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977644
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888Pallaris, спасибо вам за помощь) у меня правда в комбо загружается только одно поле с фамилиями, id там нет, НО если я правильно понимаю, можно for (int j = 0; j < comboBox6.Items.Count; j++) и j записать в ["userID"]???нее

а мне значит - "не спасибо"?
помогай после этого людям (ц)
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977671
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888,

нет, в строке грида уже должна содержаться более точная инфа (id), чем Фио. Т.е.ты ж сделал, что в гриде сохраняется выбранная из комбы фио? Вот теперь сделай, чтоб незамето сохранялся SelectedIndex
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977694
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wild888В гриде ... в 1м столбце остаются их фамилии,
в comboBox список этих фамилий

взял 1й элемент в comboBox, ... нашёл всё такие же равные ему и покрасил в один цвет строки,
взял 2й элемент в comboBox, нашёл все такие в гриде и окрасил в другой цвет
Код: c#
1.
dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.BlanchedAlmond;


В коде указан лишь один цвет, а по описанию нужен список цветов, в которые будут окрашиваться одинаковые фамилии.
Обрадую: нужен третий цикл, который будет проходить по списку цветов.


Можно попробовать следующее: загоняем фамилии в HashSet или Dictionary (нужно подумать, что будет удобней), а задание цвета ячейке делаем в событии CellFormatting.

ЗЫ: слышишь стук в дверь? это майор из военкомата...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977721
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Циклы? Не... Циклы не нужны

Надо событие RowPrePaint

Например, закрашиваются специальным цветом строки, где в колонке 0 в словах есть буква "е".
Код: c#
1.
2.
3.
4.
5.
6.
 private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            
            if (dgv.Rows[e.RowIndex].Cells[0].Value.ToString().Contains("е"))
                dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.BlanchedAlmond;
        }
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977722
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
petalvikв событии CellFormatting.
Не самый лучший выбор для закраски всей строки
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977726
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
petalvikОбрадую: нужен третий цикл, который будет проходить по списку цветов.
Ты уж так не пугай человека
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977742
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вообще-то такая идея (по разному раскрашивать строки в зависимости от чего-то) рано или поздно посещает всех, кто выводил значения в грид.

Раскрасить не проблема. Проблема в том, что количество цветов для фона, которые не вызывают тошноту и отличаются визуально - ограничено.

Поэтому я предлагаю отказаться от идеи красить все, а красить только по выбранному в комбобоксе элементу.

Однако и это не очень хорошая идея - мы опять перекладываем отбор на пользователя. Пусть своими глазами ищет

В таких случаях я делаю фильтр. То есть не изменяю источник новым запросом, а фильтрую уже загруженное
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977779
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallariswild888,

нет, в строке грида уже должна содержаться более точная инфа (id), чем Фио. Т.е.ты ж сделал, что в гриде сохраняется выбранная из комбы фио? Вот теперь сделай, чтоб незамето сохранялся SelectedIndex
да я сделал на событии RowChanged при генерации новой строки, и так как уменя это 1-е большое приложение, я всё быстрей хотел а кусаю локти, у меня в главной таблице нет ключевого поля ID, а сохраняются записи по ключевому полю datetime, там у меня с секундами так то исключения не вылетают....только не ругайте, поздняк уже месяца два работает 1800 записей написали не тормозит,вроде норм...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977782
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvikwild888В гриде ... в 1м столбце остаются их фамилии,
в comboBox список этих фамилий

взял 1й элемент в comboBox, ... нашёл всё такие же равные ему и покрасил в один цвет строки,
взял 2й элемент в comboBox, нашёл все такие в гриде и окрасил в другой цвет
Код: c#
1.
dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.BlanchedAlmond;


В коде указан лишь один цвет, а по описанию нужен список цветов, в которые будут окрашиваться одинаковые фамилии.
Обрадую: нужен третий цикл, который будет проходить по списку цветов.


Можно попробовать следующее: загоняем фамилии в HashSet или Dictionary (нужно подумать, что будет удобней), а задание цвета ячейке делаем в событии CellFormatting.

ЗЫ: слышишь стук в дверь? это майор из военкомата...
нееее меня не берут!!! ну то что тут одиня пытался хотя б для одного сначала сделать...
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977787
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2Вообще-то такая идея (по разному раскрашивать строки в зависимости от чего-то) рано или поздно посещает всех, кто выводил значения в грид.

Раскрасить не проблема. Проблема в том, что количество цветов для фона, которые не вызывают тошноту и отличаются визуально - ограничено.

Поэтому я предлагаю отказаться от идеи красить все, а красить только по выбранному в комбобоксе элементу.

Однако и это не очень хорошая идея - мы опять перекладываем отбор на пользователя. Пусть своими глазами ищет

В таких случаях я делаю фильтр. То есть не изменяю источник новым запросом, а фильтрую уже загруженное
ВОТ!, про RowPrePaint можно подумать мне хорошенько...и ещё у мята такая фигня, что дежурные оставляют записи на грид1 например, а для наблюдения мастерам я им данные в гриде 2 показываю, 1й скрываю, вот фильтры я сделал всякие по всем параметрам, но мне тут поступило предложение:"вот зашол я в программу и всё сливается будет хорошо если записи дежурных будут отличаться разными цветами"....вот и сижу 2й день и думаю и туплю...но попробую все ваши идеи и сразу отпишу)))
...
Рейтинг: 0 / 0
Цикл по раскраске dataGridView
    #38977788
wild888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так ВСЕМ ОГРОМНОЕ СПАСИБО, что уделили чуточку времени)))


если вдруг у кого ещё будут предложения по этому поводу, пишите, вопрос пока не решён((
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Цикл по раскраске dataGridView
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]