修改数据表 C#
本文关键字:数据表 修改 | 更新日期: 2023-09-27 17:56:15
>我在数据表中有一个数据列表,我还有一个按钮,单击该按钮将显示上周已完成的行。
但是,由于某种原因,我无法在修改后更新表格
我得到 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();
}
您应该改为绑定到DataView
:
dgCompletedRequests.DataSource =
new DataView(compDV.Table, "DateCompleted > #" + lastWeek + "#");
我会从评论中遵循 SLaks 的建议,但归根结底,我也会考虑撑船并重写代码以查询数据表而不修改原始数据表。
dgCompletedRequests.DataSource =
temp.AsEnumerable()
.Where(row => row.Field<Datetime>("DateCompleted") >= lastWeek)
.AsDataView(); // or .CopyToDataTable(); if you need it
在执行此代码之前,dgCompleteRequests.DataSource 是否已经设置好了?我不确定这是否适合您,但过去对我有用,您可以尝试一下。设置 dgCompleteRequests.DataSource = null;然后将其设置为 Temp 之后。不知何故,我认为这将"重置"数据绑定。