/// <summary> /// Очистить таблицу срезов /// </summary> public override void Clear() { base.Clear(); LastStoredSrez = null; AddedSrezList.Clear(); ModifiedSrezList.Clear(); }
/// <summary> /// Добавить копию среза в таблицу /// </summary> /// <remarks>Если в таблице уже существует срез с заданной меткой времени, /// то в него копируются данные из исходного среза</remarks> public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT) { if (srcSrez == null) { throw new ArgumentNullException("srcSrez"); } Srez srez; SrezTableLight.Srez lightSrez; if (SrezList.TryGetValue(srezDT, out lightSrez)) { // изменение существующего в таблице среза srez = (Srez)lightSrez; // возможно исключение InvalidCastException srez.CopyDataFrom(srcSrez); if (srez.State == DataRowState.Unchanged) { srez.State = DataRowState.Modified; ModifiedSrezList.Add(srez); } } else { // создание и добавление нового среза в таблицу srez = new SrezTable.Srez(srezDT, srcSrez); srez.State = DataRowState.Added; AddedSrezList.Add(srez); SrezList.Add(srezDT, srez); } return(srez); }
/// <summary> /// Add a copy of the slice to the table /// </summary> /// <remarks>If there is already a slice in the table with the specified time stamp, /// then data is copied from the original slice</remarks> public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT) { if (srcSrez == null) { throw new ArgumentNullException(nameof(srcSrez)); } Srez srez; if (SrezList.TryGetValue(srezDT, out SrezTableLight.Srez lightSrez)) { // change existing slice in the table srez = (Srez)lightSrez; // InvalidCastException possible srez.CopyDataFrom(srcSrez); if (srez.State == DataRowState.Unchanged) { srez.State = DataRowState.Modified; ModifiedSrezList.Add(srez); } } else { // creating and adding a new slice to the table srez = new Srez(srezDT, srcSrez) { State = DataRowState.Added }; AddedSrezList.Add(srez); SrezList.Add(srezDT, srez); } return(srez); }
/// <summary> /// Accept slice table changes /// </summary> public void AcceptChanges() { foreach (var lightSrez in SrezList.Values) { if (lightSrez is Srez srez) { srez.State = DataRowState.Unchanged; } } AddedSrezList.Clear(); ModifiedSrezList.Clear(); }
/// <summary> /// Принять изменения таблицы срезов /// </summary> public void AcceptChanges() { foreach (SrezTableLight.Srez lightSrez in SrezList.Values) { Srez srez = lightSrez as Srez; if (srez != null) { srez.State = DataRowState.Unchanged; } } AddedSrezList.Clear(); ModifiedSrezList.Clear(); }
/// <summary> /// Отметить срез как добавленный /// </summary> public void MarkSrezAsAdded(Srez srez) { if (srez != null) { if (dataLoading) { srez.State = DataRowState.Unchanged; } else { srez.State = DataRowState.Added; srez.Position = -1; AddedSrezList.Add(srez); } } }