我有一个数据表中的数据列表,还有一个按钮,当单击该按钮时,将显示上周已完成的行。

但是,由于某种原因,修改后我无法更新表

我得到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

09-11 18:23
查看更多