Вы можете использовать привязки данных с помощью AutoGenerateColumns = false
и используя DataPropertyName, как это
grid.Columns["Column_name_1"].DataPropertyName = "public_property_1";
grid.Columns["Column_name_2"].DataPropertyName = "public_property_2";
Таким образом, только связанные столбцы будут показаны в представлении datagridview, и вы можете создать столбцы в редакторе, если хотите , Открытые свойства могут быть любыми публичными атрибутами внутри вашего объекта.
Если вы редактируете свои данные из datagridview, вы должны использовать NotifyPropertyChanged в методах набора. Мой вопрос / ответ здесь , где я объясняю это до конца.