Я пытаюсь отфильтровать столбец крайнего срока в datagridview на 2 datetimepickers - startDate и endDate.Фильтрация datagridview с использованием дат
DataGridView является TaskTable2, DateTimePicker1 является startSchedule, datetimepicker2 является endSchedule и срок в DataGridView является deadlineRow
До сих пор я получил следующий код, который успешно делает строки невидимые, которые не находятся между выбранным началом и дата окончания.
private void scheduleButton_Click(object sender, EventArgs e)
{
DateTime startSchedule = startDate.Value.Date;
DateTime endSchedule = endDate.Value.Date;
if (startSchedule <= endSchedule)// runs foreach loop if startdate and enddate are valid
{
foreach (DataGridViewRow dr in TaskTable2.Rows)// loops through rows of datagridview
{
string deadline = dr.Cells["Deadline"].Value.ToString(); // gets deadline values
DateTime deadlineRow = Convert.ToDateTime(deadline); // converts deadline string to datetime and stores in deadlineRow variable
if (startSchedule <= deadlineRow && deadlineRow <= endSchedule) // filters deadlines that are => startDate and <= endDate
{
dr.Visible = true; // display filtered rows here.
}
else
{
dr.Visible = false; // hide rows that are not beteen start and end date.
}
}
}
else
{
MessageBox.Show("Please ensure Start Date is set before End Date."); // ensures user selects an end date after the start date.
}
}
Однако, у меня есть несколько существующих проблем:
- сбой приложения, и я получаю следующее сообщение об ошибке, когда я выбрать диапазон дат, который не будет отображать задачи:
' Строка, связанная с позицией валютного менеджера, не может быть сделана невидимой '
- У меня есть pri nt, которая должна печатать отфильтрованные результаты. Однако он печатает все данные, хранящиеся в datagridview, даже если некоторые строки видны = false из нажатия кнопки расписания, поэтому я предполагаю, что мне нужно использовать другой подход, чтобы удалить строки, а не скрывать их.
Datagridview привязан к файлу XML, поэтому данные могут быть удалены из datagridview для фильтрации и печати в течение длительного времени, пока они остаются в файле XML.
Любая помощь была бы принята с благодарностью!
Thankyou
Похоже, вам даже не нужно сначала очистить выбор; просто установив CurrentCell в null/ничего не сделал трюк для меня. Спасибо за совет! –