我有一个数据集,其中有 2 个表可用。这些表是在加载页面时从数据库填充的。现在考虑我的情况。当页面加载时,这两个数据集表都填充了数据库中的数据。
表 1:1 行的项目主表(主表)
表 2:5 行的项目详细信息(子表 - 绑定在 GridView 中)
如果我对“项目详细信息”表什么都不做,那么我的值为MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)
NULL。
但是,如果我从 UI 将新数据行添加到“项目详细信息”表中,我将获得的值MyDataset.Tables[TableName].GetChanges(DataRowState.Modified)
是添加了新行的数据表。
在 UI 中,当用户从 UI 添加新数据行时,我想对“项目详细信息”表进行排序。所以我做了这样的代码,并在添加新数据行时创建了方法。
private void SortProjectDetailTable(ref DataSet ds)
{
DataView dv = new DataView(ds.Tables["ProjectDetailTable"]);
DataTable dtTemp = new DataTable("ProjectDetailTable");
dv.Sort = " DATE DESC ";
dtTemp = dv.ToTable().Copy();
if (ds.Tables.Contains("ProjectDetailTable"))
ds.Tables.Remove("ProjectDetailTable");
ds.Tables.Add(dtTemp);
}
此方法完美地对数据表进行排序。但是当我尝试获取“ MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)
”的值时,我得到它 NULL 而“ MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Added)
”的值是具有 6 行的 DataTable。
其实我想要这样
MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Modified)
值应为“UI 中的 1 个新添加行”MyDataset.Tables["ProjectDetailTable"].GetChanges(DataRowState.Added)
值应该是“NULL”,因为我在页面加载事件中从数据库中获取了 5 行
最后,问题是我想在不影响数据集中行的原始状态的情况下对数据集中的数据表进行排序。