public void DeleteRow(int rowIndex)
        {
            if (IsFiltered)
            {
                throw new InvalidOperationException("DeleteRow not possible while data is filtered");
            }

            originalData.DeleteRow(rowIndex);
        }
 private void DeleteRows(List <int> rows)
 {
     rows.Sort();
     rows.Reverse();
     preprocessingData.InTransaction(() => {
         foreach (int row in rows)
         {
             preprocessingData.DeleteRow(row);
         }
     });
 }
 public void SetFilter(bool[] rowFilters)
 {
     filteredData = (ITransactionalPreprocessingData)originalData.Clone();
     filteredData.InTransaction(() => {
         for (int row = (rowFilters.Length - 1); row >= 0; --row)
         {
             if (rowFilters[row])
             {
                 filteredData.DeleteRow(row);
             }
         }
     });
     OnFilterChanged();
 }