Это сложно, потому что datagridview действительно не дает никакой помощи для этого вообще. Но модель может быть очень удобной, если вы хотите отобразить небольшое количество объектов с большим количеством свойств.
Ответ Sabrina_cs выше будет обрабатывать простой случай отображения данных в повернутом виде. Однако вы потеряете все расширенные возможности редактирования, предоставляемые различными классами DataGridViewxxxColumn. Это может быть решено, но вам придется бросить свой собственный класс, чтобы добраться туда.
Я построил класс в прошлом, чтобы решить эту проблему в обобщенном виде. Я не могу поделиться этим кодом, поскольку я сделал это для работы, но я могу описать решение для вас.
Сначала представляет собой файл конфигурации на основе xml, чтобы определить набор строк, которые будут отображаться в свойствах. В нашем случае этот файл конфигурации включал в себя порядок, имена свойств, типы данных, ссылки поиска, представление (флажок, поле со списком и т. Д.), Текст заголовка, статус только для чтения и все остальное, что вы считаете нужным.
При инициализации формы вы будете использовать этот конфигурационный файл для генерации строк в своей сетке и привязки определения к строке для последующего обращения к вашему коду.
При загрузке данных вам необходимо будет привязать значения к ячейкам, поскольку встроенная привязка не будет работать для вас. Если вы реализуете специальные элементы управления для данных, отличных от текста, вам нужно будет вручную привязать правильный элемент управления к ячейке либо при инициализации строк, либо при привязке фактических данных. Мы использовали это для boolean -> checkbox и lookup -> combobox.
Пока данные редактируются, вы будете нести ответственность за обновление своих собственных базовых объектов данных, которые вы, вероятно, захотите связать с столбцами во время загрузки данных. Вы можете использовать отражение для обновления свойства на основе информации в файле конфигурации.
Я знаю, что это не много деталей, но, надеюсь, это обеспечит достаточный фон, чтобы вы могли получить представление о том, как вы можете продолжить, или если это будет стоить усилий. В зависимости от того, насколько богатый опыт вы пытаетесь обеспечить, это может легко быть 1000 + строк кода, поэтому это нетривиально.
Для набора данных, который мы пытались обработать, наши пользователи обнаружили, что эта презентация является чрезвычайно ценным улучшением. YMMV. Удачи.
Вы имеете в виду поворот сетки? Текущие строки становятся столбцами, а текущие столбцы становятся строками? Вы хотите, чтобы это было постоянным поведением этой сетки или вы пытаетесь сделать ее динамичной? – cdkMoose
@cdkMoose Я думаю, что pivot будет подходящим термином для описания того, что я пытаюсь сделать, так что да. Да, я бы хотел, чтобы это было постоянным поведением. – HiTech