MVP имеет смысл только для WinForms.
WinForms толком смысла сейчас брать нет. Лучше WPF с MVVM.
Есть хороший пример
от этого мужика:
markheath.net/downloads/podcastmvp.zip
Presenter как правило или Passive или Observing. У вас видимо пассивный.
Пассивный это жесть тк в все делаете с видом руками через Set/Get. Работает, но кода очень много получается только чтобы галочку поставить.
Поэтому используют "обзервирующий", те виндят (Bindings.Add) вид к презентеру.
Чтобы биндинги работали надо прибиндить таблицу или к ObservingCollection<столбцы таблицы> (WPF/Winforms) или BindingList(winforms).
Presenter должен тогда имплементировать INotifyPropertyChanged как и класс который вы дадите ObservingCollection.
Тут пути M и P расходятся тк в модели у вас какой-нить ORM для базы и вам нужно конвертировать объект который в базе в объект который в таблице. Те вы или передаете объект из презентера в модел, который его чистит и заполняет заново или презентер вызывает метод модели который дает новый объект.
"Ж*па" начнется когда данных станет много и вы решите читать их в таске или исинхронно. В модели сессия ДБ, а они не очень любят когда их используют из другого треда (наша грит мол нет).