我想通過2 datetimepickers - startDate和endDate篩選datagridview中的截止日期列。使用日期篩選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文件中即可。
任何幫助將不勝感激!
三江源
看起來你甚至不需要先清除選擇;只需將CurrentCell設置爲空/沒有任何操作對我來說是個竅門。謝謝你的提示! – 2012-04-04 00:10:19