Здравствуйте. Несколько дней назад я опубликовал похожий вопрос, и мне сказали использовать фильтр набора данных для фильтрации моего представления данных. Я попробовал, но я изо всех сил пытаюсь понять, как это сделать.
Я пытаюсь отфильтровать столбец крайнего срока в сетке данных по 2 указателям datetime - startDate и endDate.
сетка данных - TaskTable2, datetimepicker1 - startSchedule, datetimepicker2 - endSchedule, а крайний срок в сетке данных - deadlineRow
TaskDataSet в базовом источнике данных.
Пока у меня есть следующий код, который успешно делает строки невидимыми, которые не находятся между выбранной датой начала и окончания.
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.
TaskTable2.CurrentCell = null;
}
}
}
else
{
MessageBox.Show("Please ensure Start Date is set before End Date."); // ensures user selects an end date after the start date.
}
}
Однако у меня есть несколько существующих проблем:
Использование свойства visible - неправильный подход, мне нужно отфильтровать набор данных, используя что-то вроде следующего (не знаю, как это сделать)
TaskDataSet.Filter = "startSchedule <= Deadline AND Deadline <= endSchedule";
У меня есть кнопка печати, которая должна печатать отфильтрованные
Результаты. Тем не менее, он печатает все данные, хранящиеся в
datagridview, даже если некоторые строки видны = ложь от нажатия
кнопка расписания, поэтому мне нужно отфильтровать набор данных, а затем
используйте это в событии печати.
Представление сетки данных связано с файлом XML, поэтому данные могут быть удалены из представления таблицы данных для фильтрации и печати в течение всего времени, пока они остаются в файле XML.
Если бы кто-то мог изменить мой код с помощью фильтра набора данных вместо использования свойства visible, это было бы очень полезно.
Спасибо!