private void RefreshRows(int begin, int end, bool refreshSelectedRow) { int offset = begin - grid_.VisibleRowTop; int row_ct = end - begin + 1; //System.Diagnostics.Debug.WriteLine("Refresh : b=" + begin + " e=" + end + " refresh=" + refreshSelectedRow); if (row_ct <= 0 || table_ == null) { return; } grid_.SuspendDrawRows(); int i = 0; foreach (var row in table_.Select(sql_, begin, row_ct)) { SetRowData(offset + i, row, refreshSelectedRow); i++; } if (i < row_ct && begin + i == grid_.RowCount - 1 && grid_.NewRowIsVisible) { SetRowData(offset + i, new_row_, refreshSelectedRow); i++; } for (; i < row_ct; i++) { SetRowData(offset + i, null, refreshSelectedRow); } grid_.ResumeDrawRows(); }