首页 > 解决方案 > DataTable.Select ("Complete").Count<> 没有给出正确的总数

问题描述

在我的 Winforms 应用程序保存按钮中,我将要保存的记录的 Complete 列更改为 true,稍后在同一个按钮中,我得到了已完成的记录总数(将显示在屏幕上):

dtFacilities.Rows[grdFacilities.CurrentCell.RowIndex].SetField ("Complete", true);
...
...
...
Completed = dtFacilities.Select ("Complete").Count<DataRow>();

当我查看 DataTable 时,我现在可以在示例中看到我有两条记录,该标志设置为 true。一条记录是以前保存的,一条是我刚刚在他们单击“保存”按钮时更新的新记录。但是,Completed(一个 int)返回 1。用户第一次单击按钮时,Completed 不会更新。在第一次不更新之后,它会正确更新。

有谁看到我可能做错了什么?如果有帮助,我可以提供更多代码。

在此处输入图像描述

同一行代码在我的加载事件中完美运行:

Completed = dtFacilities.Select ("Complete").Count<DataRow>();

只是不在我的 Save 方法中。

标签: c#datatable

解决方案


看起来我正在失去对当前行的追踪。这是我在那个保存按钮中的原件(在我实际得到总数之前):

grdFacilities.Rows [grdFacilities.CurrentCell.RowIndex].Cells ["Complete"].Value = true;
dtFacilities.Rows [grdFacilities.CurrentCell.RowIndex].SetField ("Complete", true);
    
DataRow dr = dtFacilities.Rows.Find (grdFacilities.CurrentCell.Value);
dr ["Complete"] = true;

我发现如果我颠倒这些行,我的总计工作正常:

DataRow dr = dtFacilities.Rows.Find (grdFacilities.CurrentCell.Value);
dr ["Complete"] = true;
 
grdFacilities.Rows [grdFacilities.CurrentCell.RowIndex].Cells ["Complete"].Value = true; 
dtFacilities.Rows [grdFacilities.CurrentCell.RowIndex].SetField ("Complete", true);

推荐阅读