Как элегантно решить эту проблему с формой посещаемости? - PullRequest
2 голосов
/ 14 апреля 2011

http://i.stack.imgur.com/gWWg4.png

По сути, я хочу отобразить список всех студентов (их имена указаны слева), и в каждой строке (каждый студент) отобразить каждую дату для выбранного месяцав поле со списком.

Я как бы озадачен тем, как справиться с этим.

Вот что у меня есть до сих пор:

//cmbMes is the combobox that holds each month to be selected.
private void cmbMes_SelectedIndexChanged(object sender, EventArgs e)
{
    dataGridView1.DataSource = null;
    int gradeParaleloId = Convert.ToInt32(cmbGradeParalelo.SelectedValue);
    var studentRepo = new StudentRepository();
    var students = studentRepo.FindAllStudentsFromGradeParalelo(gradeParaleloId);
    var rows = new List<DataGridViewRow>();

    foreach (var student in students)
    {
        DataGridViewRow newRow = new DataGridViewRow();
        newRow.SetValues(new object[] { "test", "test", "test" });
        rows.Add(newRow);
    }

    dataGridView1.DataSource = rows;
}

Так что для тестирования я сделалэто немного тамОн выбирает правильных учеников, но метод SetValues, кажется, не выполняет то, что, я думаю, должен делать.

enter image description here

На данный момент я открыт для предложений,Я только так поступил, потому что только начинаю заниматься этим.Может быть, есть лучший способ использовать некоторые Linq-фу.

Конкретный вопрос: правильный ли это подход к нему, создание коллекции DataGridViewRows и установка их в качестве .DataSource?

Спасибо за предложения.

1 Ответ

0 голосов
/ 14 апреля 2011

Вы, вероятно, хотите что-то вроде этого:

 var q = from i in new int[] { 1, 2, 3, 4, 5, 6, 7 }
                select new { Id = i, Name = "test" };
        dataGridView1.DataSource = q.ToList();

Хитрость в том, что имена свойств переводятся в столбцы. Вам не нужно использовать типы DataGridViewRow здесь.

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