我有一个数据集,其中有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行最后,问题是我想在数据集中对Datatable进行排序而不影响Dataset中的原始行状态。
答案 0 :(得分:0)
you can use another dataset for new rows for UI and then sort it
after copy it in your dataset