我有一个数据表中的数据列表,还有一个按钮,当单击该按钮时,将显示上周已完成的行。
但是,由于某种原因,修改后我无法更新表
我得到7天前的日期,对于完成日期比源DataTable中的日期大的每一行,我都删除该行。那应该只剩下上周完成的行,但是由于某种原因,在我的方法完成后,每一行仍然保留。有人可以在这里发现问题吗?
在此先感谢您的帮助!
protected void btnShowLastWeek_OnClick(Object sender, EventArgs e)
{
DateTime current = DateTime.Today;
DateTime lastWeek = current.AddDays(-7);
DataTable temp = compDV.Table;
for(int i = 0; i < temp.Rows.Count; i ++)
{
DateTime completed = (DateTime)temp.Rows[i]["DateCompleted"];
if (completed.CompareTo(lastWeek.Date) <= 0)
{
temp.Rows.RemoveAt(i);
}
}
dgCompletedRequests.DataSource = temp;
dgCompletedRequests.DataBind();
}
最佳答案
我会从注释中遵循SLaks的建议,但是当涉及到它时,我也将考虑使用punting并重写代码以查询数据表而不修改原始表。
dgCompletedRequests.DataSource =
temp.AsEnumerable()
.Where(row => row.Field<Datetime>("DateCompleted") >= lastWeek)
.AsDataView(); // or .CopyToDataTable(); if you need it