| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*******************************************************************************
- * Copyright(c) 2012 dongke All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:DataJudge.cs
- * 2.功能描述:对各种数据集数据是否变化的判断类
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * 欧阳涛 2012/06/07 1.00 新建
- *******************************************************************************/
- using System;
- using System.Data;
- using System.Windows.Forms;
- namespace Dongke.IBOSS.PRD.Basics.Library
- {
- /// <summary>
- /// 对各种数据集数据是否变化的判断类
- /// </summary>
- public class DataJudge
- {
- #region IsChange函数
- /// <summary>
- /// 判断DataSet里面的内容是否发生了改变
- /// <br/>
- /// Modified状态的情况下,编辑前与编辑后的信息进行比较,查看是否有差异。
- /// </summary>
- /// <param name="dataSet">需要判断的数据集</param>
- /// <returns>
- /// True:数据集发生了改变
- /// False:数据集未发生改变
- /// </returns>
- public static bool IsChange(DataSet dataSet)
- {
- // 数据集为空的情况下,返回False
- if (dataSet == null)
- {
- return false;
- }
- // 将编辑中的行执行EndEdit结束编辑状态
- foreach (DataTable dataTable in dataSet.Tables)
- {
- foreach (DataRow dataRow in dataTable.Rows)
- {
- dataRow.EndEdit();
- }
- }
- // 取得数据集中变化的部分,如果为空返回False
- DataSet setChanges = dataSet.GetChanges();
- if (setChanges == null)
- {
- return false;
- }
- // 变化部分的数据表有改变的情况下返回True
- foreach (DataTable dataTable in setChanges.Tables)
- {
- if (IsChange(dataTable))
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 判断DataTable里面的内容是否发生了改变
- /// </summary>
- /// <param name="dataTable">需要判断的数据集</param>
- /// <returns>
- /// True:DataTable发生了改变
- /// False:DataTable未发生改变
- /// </returns>
- public static bool IsChange(DataTable dataTable)
- {
- // 数据表为空的情况下,返回false
- if (dataTable == null)
- {
- return false;
- }
- // 数据表中有新增数据,返回True
- if (dataTable.GetChanges(DataRowState.Added) != null)
- {
- return true;
- }
- // 数据表中有删除的数据,返回True
- if (dataTable.GetChanges(DataRowState.Deleted) != null)
- {
- return true;
- }
- // 判断每一行是否有被编辑过的数据
- DataTable tableChanges = dataTable.GetChanges(DataRowState.Modified);
- if (tableChanges != null)
- {
- foreach (DataRow dataRow in tableChanges.Rows)
- {
- if (IsChange(dataRow))
- {
- return true;
- }
- }
- }
- return false;
- }
- /// <summary>
- /// 判断DataRow数据集里面的内容是否发生了改变
- /// </summary>
- /// <param name="dataRow">需要判断的DataRow数据集</param>
- /// <returns>
- /// True:DataRow发生了改变
- /// False:DataRow未发生改变
- /// </returns>
- public static bool IsChange(DataRow dataRow)
- {
- // DataRow为空的情况,返回False
- if (dataRow == null)
- {
- return false;
- }
- // DataRow的行状态为增加或者删除的状态,返回True
- if (dataRow.RowState == DataRowState.Added
- || dataRow.RowState == DataRowState.Deleted)
- {
- return true;
- }
- // DataRow的状态为编辑状态,分别判断每一行的每一列是否有改变
- if (dataRow.RowState == DataRowState.Modified)
- {
- foreach (DataColumn dataColumn in dataRow.Table.Columns)
- {
- if (dataColumn.ReadOnly)
- {
- continue;
- }
- if (!Utility.Compare(dataRow[dataColumn, DataRowVersion.Original],
- dataRow[dataColumn, DataRowVersion.Current]))
- {
- return true;
- }
- }
- }
- return false;
- }
- #endregion
- }
- }
|