Приятно видеть, сколько знаний у людей здесь, это сокровище места.
Я видел себя пишущим код для событий DataGridView и использующим DataSource для подготовленного бэкэндом объекта DataTable.
Иногда пользователь может удалять строки, обновлять их и т. Д., И базовые данные снова будут нуждаться в проверках правильности.
Давайте предположим, что у нас есть человек класса
class Person {
public string FirstName { get; set; }
}
Допустим, некоторая другая часть кода имеет дело с созданием массива Person.
class Processor {
public static Person[] Create()
{
....
....
return person[];
}
}
И эта информация появится в DataGridView для просмотра пользователем.
Я пробовал что-то вроде этого:
public static DataTable ToTable(List<Person> list)
{ ... }
И имел этот метод в классе Person ... которому, я думаю, он бы принадлежал. Затем я привязал бы DataGridView к этой DataTable, и пользователь затем увидит эти данные и выполнит свои задачи.
Но я подумал об использовании BindingList <>, о котором я пока не очень разбираюсь ... Будет ли у меня такая же возможность сортировки DataGridView, как у DataTable в качестве источника данных? Будет ли BindingList реализован контейнерным классом, таким как PersonCollection, или класс Person будет реализован сам по себе? Я хотел бы запустить некоторые события, чтобы иметь возможность корректно изменять коллекцию без необходимости сбрасывать источники данных и т. Д. Там, где пользовательский опыт действительно может быть затронут.
Я понимаю, что изменение DataSource DataTable - это хороший способ. Но иногда мне нужно запускать методы в соответствующем классе, на который ссылается эта конкретная строка, и иметь некрасивый дополнительный скрытый столбец, который будет содержать ссылку на существующий объект где-то еще (ссылка Person).
Если вы, ребята, знаете лучшее дизайнерское решение, я был бы очень рад его услышать.
Заранее спасибо,
PS. Прочитав «Прагматичный программист», я просто не могу перестать критически думать о коде!
Лев Б.