private void dgvEmployeeRoles_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) { var sorted = _roles.OrderBy(item => item.NameRole).ToList(); if (sorted.Count == 0) { return; } // для каждого столбца виртуальной таблицы switch (e.ColumnIndex) { case 0: // наименование должности e.Value = sorted[e.RowIndex].NameRole; break; case 1: // оклад жалования за месяц e.Value = sorted[e.RowIndex].Salary + " руб."; break; } }