Какой предпочтительный способ выбрать данные для отображения в DataGridView? - PullRequest
0 голосов
/ 05 апреля 2011

Вот мой код:

private void LoadStudents()
{
    Int64 gradeInstanceId = Convert.ToInt64(cmbGradeInstance.SelectedValue);

    StudentInstanceRepository studentInstanceRepo = new StudentInstanceRepository();
    var studentInstances = studentInstanceRepo.FindAll()
                    .Where(s => s.GradeInstanceId == gradeInstanceId);

    StudentRepository studentRepo = new StudentRepository();
    List<Student> students = new List<Student>();

    foreach (var item in studentInstances)
    {
        students.Add(studentRepo.FindStudent(item.StudentId));
    }

    dataGridView1.DataSource = students;
}

Когда я устанавливаю источник данных непосредственно для студентов, отображаются все столбцы в таблице. Мне нужно только показать, например, Имя и Фамилия, оба являются атрибутами в классе Student.

Как бы это отобразить? Спасибо!


EDIT

Используется для работы с предыдущей версией формы:

dataGridView1.DataSource = studentRepo.FindAll()
                          .Where(s => s.GradeParaleloId == gradeID)
                          .Select(s => new { Codigo = s.StudentId, RUDE = s.Rude, Nombre = s.Name + " " + s.LastNameFather + " " + s.LastNameMother, Telefono = s.Telephone });

Метод FindAll () был просто возвращением для IQueryable.

Почему это работает раньше, а этот новый код - нет?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Попробуйте это:

dataGridView1.DataSource = students.Select(a=> new{a.Name, a.LastName}).ToList(); 
0 голосов
/ 05 апреля 2011

ОК, в первой версии вид пропущен (при условии ASP.NET).В WinForms просто щелкните правой кнопкой мыши на сетке и «Редактировать столбцы» и привяжите к этому:

dataGridView1.DataSource = from s в studentInstanceRepo.FindAll (), где s.GradeInstanceId == gradeInstanceId выберите new {s.Name,s.LastName};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...