Amar chand123 Ответов: 4

Как минус два столбца datagridview значение в третьем столбце


Привет,
у меня есть такие же столбцы в моем DataGridView в C# WinForm

LastDate TodayDate RemainingDay
18/05/2020 01/05/2020 17


Мне нужно в моем элементе управления datagridview (LastDate) и (TodayDate) значений столбцов минус автомат и покажите на моем (RemainingDay) столбцы

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

я пробую тот же метод, но не работаю должным образом

так что, пожалуйста, помогите мне

4 Ответов

Рейтинг:
1

OriginalGriff

Если это только для целей отображения, то самый простой способ-обработать событие CellPainti8ng для DGV, проверить, является ли это "разностным столбцом", и если да, то вычислить его и показать значение. Я делаю что-то подобное с ячейками couling DGV, чтобы указать аномальные значения: Раскрашивание ячеек DataGridView в соответствии с их содержимым в WinForms[^] - это должно быть довольно легко сделать то, что вы хотели от этого.

Если вы хотите, чтобы он сохранялся обратно в вашу БД, то вам нужно будет работать с источником данных, а не с DGV .


Рейтинг:
1

Mohamed Aboelkheer

Возможно, вы можете использовать разницу между датой в sql-запросе

SELECT LastDate ,TodayDate ,DATEDIFF(day, LastDate, TodayDate) AS RemainingDay


Рейтинг:
0

MadMyche

Возможно, вы могли бы использовать DateTime.Вычитать()[^] метод заполнения этого столбца.

Ссылка:
значение datetime.Метод Вычитания (Система) | Microsoft Docs[^]


Рейтинг:
0

phil.o

int remainingDays = (lastDate - todayDate).Days;


MadMyche

+5 Надеюсь, что эти столбцы действительно являются датами, а не строками

phil.o

Спасибо :) Я задавался тем же вопросом, но мы можем просто исправить ответ, если бы вместо правильного типа данных использовались строки.

Amar chand123

частная пустотная нагрузка()
{

по каждому элементу (ячейки datagridviewrow Row в dataGridView2.Строк)
{
DateTime dt = конвертировать.Объект todatetime(dataGridView2.CurrentRow.Ячейки["LasttDate"].Значение);
DateTime dt1 = конвертировать.Объект todatetime(dataGridView2.CurrentRow.Ячейки["TodayDate"].Значение);
инт Д12 = (ДТ - ст1).Дней;

ряд.Клетки["Дуэль"].Значение = d12;

}
}
сэр, я пробую этот код, но показать ошибку я новичок в программировании, так что вы можете помочь

Необработанное исключение типа 'System.Которого вызывается invalidcastexception произошел в mscorlib.dll

Дополнительная информация: объект не может быть приведен из DBNull в другие типы.

phil.o

Это означает, что одному из столбцов не было предоставлено никакого значения, и поэтому он является нулевым.
Как Примечание стороны, пожалуйста, не используйте Convert классы для парсинга велоэтапе; использовать значение datetime.Метод TryParse() вместо.

if (!DateTime.TryParse(dataGridView2.CurrentRow.Cells["LasttDate"].Value, out DateTime lastDate))
{
   // Problem: lastDate could not be properly parsed. You have to decide what to do in that case.
   // ...
}
if (!DateTime.TryParse(dataGridView2.CurrentRow.Cells["TodayDate"].Value, out DateTime todayDate))
{
   // Problem: todayDate could not be properly parsed. You have to decide what to do in that case.
   // ...
}
int remaining = (lastDate - todayDate).Days;