/// <summary> /// Worksheet Range Data Changed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Worksheet_RangeDataChanged(object sender, unvell.ReoGrid.Events.RangeEventArgs e) { bool isDeleteRows = false; if (e.Range.Cols >= _Worksheet.UsedRange.Cols) //delete whole rows { isDeleteRows = true; for (int rowIndex = e.Range.StartPos.Row; rowIndex <= e.Range.EndRow; rowIndex++) { IRecordModel recordModel = (from one in _Records where one.RowIndex == rowIndex select one).FirstOrDefault(); if (recordModel != null) { _Records.CollectionChanged -= Records_CollectionChanged; _Records.Remove(recordModel); _Records.CollectionChanged += Records_CollectionChanged; } } if (isDeleteRows) { _Worksheet.DeleteRows(e.Range.StartPos.Row, e.Range.Rows); for (int i = e.Range.StartPos.Row; i < _Records.Count; i++) { _Records.ElementAt(i).RowIndex = i; } } } else //delete parts of rows { for (int rowIndex = e.Range.StartPos.Row; rowIndex <= e.Range.EndRow; rowIndex++) { AddOrUpdateOneFromUi(rowIndex, e.Range.StartPos.Col, e.Range.EndCol); } } }
/// <summary> /// Paste Data /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Worksheet_AfterPaste(object sender, unvell.ReoGrid.Events.RangeEventArgs e) { RangePosition range = e.Range; AddOrUpdateRecords(range); }