DataSourceList.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Core.Mes.Client.Comm.Tool
  6. {
  7. /// <summary>
  8. /// 数据源集合,用来判断数据是否发生修改。
  9. /// </summary>
  10. /// <typeparam name="T"></typeparam>
  11. public class DataSourceList<T> : List<T>
  12. {
  13. private Dictionary<T, T> _queryDic = new Dictionary<T, T>();
  14. public Dictionary<T, T> QueryDic
  15. {
  16. get { return _queryDic; }
  17. set { _queryDic = value; }
  18. }
  19. private bool _isChanged = false;
  20. public bool IsChanged
  21. {
  22. get { return _isChanged; }
  23. set { _isChanged = value; }
  24. }
  25. /// <summary>
  26. /// 提交更改
  27. /// </summary>
  28. public void AcceptChanges()
  29. {
  30. _queryDic.Clear();
  31. _isChanged = false;
  32. foreach(T obj in this)
  33. {
  34. T obj2 = EntityHelper.CopyEntity<T>(obj);
  35. _queryDic.Add(obj, obj2);
  36. }
  37. }
  38. /// <summary>
  39. /// 数据发生更改时调用该方法。
  40. /// </summary>
  41. /// <param name="obj"></param>
  42. public void Change(T obj)
  43. {
  44. if (_queryDic.ContainsKey(obj))
  45. {
  46. _isChanged = !EntityHelper.Compare<T>(
  47. obj, _queryDic[obj]);
  48. }
  49. else
  50. {
  51. _isChanged = true;
  52. }
  53. }
  54. }
  55. }