我有以下代码,每个
我将那个
表单
都会重复使用作为更新过程的一部分。当页面加载时,BLL
会返回一个DataSet
,比如说:_personInfo = ConnectBLL.BLL.Person.GetPerson(personID);
我将那个
DataSet
存储在一个表单级变量中,然后在验证/更新过程中用它来检查更改。我逐行传递数据(尽管从未超过一行)到一个函数
中,该函数获取控件中的值并将其与DataSet
中相应列的值进行比较。如果发现不同,则将该列设置为新值并将名称添加到已更改的List
中。// Load Person info
using (var tmpPersonDT = tmpPersonDS.Tables[0])
{
if (tmpPersonDT.Rows.Count > 0)
{
foreach (DataRow row in tmpPersonDT.Rows)
{
CheckPersonData(row);
}
}
}
// Snippet of the CheckPersonData() that is being called....
if (!object.Equals(row["ResidencyCountyID"], lkuResidenceCounty.EditValue))
{
row["ResidencyCountyID"] = lkuResidenceCounty.EditValue;
_whatChanged.Add("ResidencyCounty");
}
if (!object.Equals(row["ResponsibilityCountyID"], lkuResponsibleCounty.EditValue))
{
row["ResponsibilityCountyID"] = lkuResponsibleCounty.EditValue;
_whatChanged.Add("ResponsibilityCounty");
}
if (!object.Equals(row["HispanicOriginFlag"], chkHispanic.EditValue))
{
row["HispanicOriginFlag"] = chkHispanic.EditValue;
_whatChanged.Add("HispanicOriginFlag");
}
if (!object.Equals(row["CitizenFlag"], chkCitizen.EditValue))
{
row["CitizenFlag"] = chkCitizen.EditValue;
_whatChanged.Add("CitizenFlag");
}
if (!object.Equals(row["VeteranFlag"], chkVeteran.EditValue))
{
row["VeteranFlag"] = chkVeteran.EditValue;
_whatChanged.Add("VeteranFlag");
}
我试图得到的答案是,这是否真的是最有效的方法?
如果没有别的,我想创建一个函数来进行比较,而不是重复30次(每个表单都不同),但我无法完全弄清楚。我认为也许我可以使用row [] .ItemArray,但那只有值。我必须预先知道项目的顺序并指望它们不会改变....
在CRUD应用程序中使用数据集/数据表时,我是否遗漏了一些明显的东西?
现在我需要一些关于如何在上述内容中使用它的方向。任何人可以指向的链接都将不胜感激。如果您能发布一个示例,那就更好了。
使用DataRows是否存在任何缺点?