Mohammad Imran1 Ответов: 3

Изменение цвета строки Gridview в зависимости от состояния приложения windows


Дорогие все,

1-й , у меня есть база данных посещаемости, и я хочу позвонить в gridview и изменить цвет имени столбца gridview(ClockIn), если время превышает 9:30,

2-й, если время превысило 9:30, то покажите на текстовом поле или ярлыке (Total Late) 1 и так далее.

Мольбы о помощи я новенький.

Я попробовал ниже код, но он не работает

значение datetime.Синтаксический анализ(например.Подряд.Клеток[5].Текст) &ГТ; дата и время.Parse("12:00:00 PM ")

Что я уже пробовал:

DateTime.Parse(e.Row.Cells[5].Text) > DateTime.Parse("12:00:00 PM ")

3 Ответов

Рейтинг:
23

RickZeeland

Что-то вроде этого:

private void myDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
	{
		if (e.ColumnIndex == 5)
		{
			var mydatetime = DateTime.Parse(myDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
			
			if (mydatetime.Hour > 9 && mydatetime.Minute > 30)
			{
				e.CellStyle.BackColor = Color.Yellow;
			}
		}
	}

Убедитесь, что строка DateTime в вашем DataGridView имеет правильный формат, например
"2008-05-01 7:34:42Z", вы можете опустить время, но не часть даты.
Видеть: значение datetime.Метод Синтаксического Анализа (Система)[^]


Mohammad Imran1

1, Ошибка 1 лучший перегруженный метод соответствует системе'.значение datetime.Parse(string)' имеет некоторые недопустимые аргументы

2,Ошибка 2 Аргумент 1: не удается преобразовать из "объекта" в "строку"

Mohammad Imran1

пожалуйста, также дайте мне знать ниже запрос, который я хочу подсчитать общее опоздание, если время превысило 9:30

выберите ([Clock In]) из tbl_register, где name = 'Kashif' и ([Clock In]) > '9:30'

RickZeeland

выберите функции count([часы]) от tbl_register где name = 'класс' и ([часы]) &ГТ; '9:30'
Смотрите: https://www.w3schools.com/sql/sql_count_avg_sum.asp

Mohammad Imran1

Хорошо, Спасибо... Как насчет вышеприведенного запроса, дающего ошибку...
Ошибка 1 Лучший перегруженный метод соответствует системе'.значение datetime.Parse(string)' имеет некоторые недопустимые аргументы

2,Ошибка 2 Аргумент 1: не удается преобразовать из "объекта" в "строку"

Mohammad Imran1

Привет, есть тут какой-нибудь приятель?

RickZeeland

Да, я обновил решение в ответ на ваш вопрос, я также отправил ответ. Разве ты этого не видел ?

Mohammad Imran1

Нет, я не видел..ниже код не работает..это дает ошибку .

Ошибка 1 Лучший перегруженный метод соответствует системе'.значение datetime.Parse(string)' имеет некоторые недопустимые аргументы

2,Ошибка 2 Аргумент 1: не удается преобразовать из "объекта" в "строку"
{

если (например, ColumnIndex == 5)
{
var mydatetime = Дата-Время.Синтаксический анализ(myDataGridView.Ряды[электронный.Параметр rowindex].Клетки[e.Значение columnindex].Значение);

если (mydatetime.Час > 9 && mydatetime.Минута > 30)
{
е.CellStyle.BackColor = Цвет.Желтый;
}
}

RickZeeland

Нет смысла повторять один и тот же вопрос, ответ, который я дал в приведенном выше решении, таков::
Убедитесь, что строка DateTime в вашем DataGridView имеет правильный формат, например
"2008-05-01 7:34:42Z", вы можете опустить часть времени, но не дату.

Mohammad Imran1

Извини, что я пытался, но все равно то же самое. Позвольте мне сказать вам, что у меня есть часы в столбце базы данных, а тип данных-время.

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

Ожидание
Спасибо

Mohammad Imran1

Помните что у меня есть часы в столбце тип данных время в базе данных

RickZeeland

Это не очень хорошая идея, вы должны хранить дату + время в DateTime.

Mohammad Imran1

Ладно, босс.- Позвольте мне проверить это

Mohammad Imran1

Не работает вообще.. после изменения типа данных datetime..

частная dataGridView1_CellFormatting недействительным(объект отправителя, DataGridViewCellFormattingEventArgs е)
{

если (например, ColumnIndex == 6)
{

var mydatetime = Дата-Время.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клетки[e.Значение columnindex].Значение.Метод toString());

если (mydatetime.Час > 9 && mydatetime.Минута > 30)
{
е.CellStyle.BackColor = Цвет.Желтый;

}
}
}

Рейтинг:
2

Mohammad Imran1

Я хочу сохранить файл в папке, а не в базе данных, Пожалуйста, помогите мне..


Рейтинг:
0

RickZeeland

При работе с Время поля, должно быть:

private void myDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
	{
		if (e.ColumnIndex == 5)
		{
			var mytime =myDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
			
			if (mytime > "09:30")
			{
				e.CellStyle.BackColor = Color.Yellow;
			}
		}
	}
Но сначала вы должны сделать некоторую проверку, если это допустимое время, а не нулевое.


Mohammad Imran1

Это вообще не работает.. Мое время тип данных столбца типа datetime..

Mohammad Imran1

У меня есть добавить ниже код ..но ячейка не меняет цвет.. мой тип данных-datetime..

частная dataGridView1_CellFormatting недействительным(объект отправителя, DataGridViewCellFormattingEventArgs е)
{

если (например, ColumnIndex == 6)
{

var mydatetime = Дата-Время.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клетки[e.Значение columnindex].Значение.Метод toString());

если (mydatetime.Час > 9 && mydatetime.Минута > 30)
{
е.CellStyle.BackColor = Цвет.Желтый;

}
}
}

RickZeeland

Запустите свой код в режиме отладки, поместите точку останова в строку var mydatetime и посмотрите, какое это значение, пройдитесь по коду с помощью F10.