В моей Windows Mobile приложение.NET у меня есть простой массив объекта с данными, которые я хочу отобразить в своем DataGrid. Чтобы сделать это, я просто звоню:
myDataGrid.DataSource = myArray;
Это работает, но у меня есть проблема с ним: это использует все свойства в качестве столбцов и использует названия свойств как заголовки столбцов. Я не могу выяснить, как настроить две вещи:
Выберите, какое подмножество свойств должно быть отображено как столбцы (скажите, что у меня есть идентификатор, свойство Name и Value, я только хотел бы показать Имя и Значение);
Переименуйте заголовки столбцов, чтобы иметь больше смысла (например, если свойство называют, идентификатор отображают высказывание заголовка столбца "Число").
Действительно ли это возможно вообще?
Как упомянуто это находится в Windows Mobile.NET (версия 2) приложение.
Для настройки макета необходимо установить свойство Datagrid.TableStyles.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.tablestyles.aspx
Подробнее о привязке к массиву объектов здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname (VS.71) .aspx
Для привязки System.Windows.Forms.DataGrid в строго типизированный массив объектов, объект должен содержать общедоступные свойства. Чтобы создать DataGridTableStyle, который отображает такой массив, установите Свойство MappingName для classname [] где имя класса заменяется на название класса. Также обратите внимание, что Свойство MappingName равно деликатный случай.
Не знаю, знаете ли вы заранее названия столбцов? Но если это так, вы можете перейти в «Редактировать столбцы» своего DataGridView и просто создать там свои столбцы. В категории «Данные» измените «DataPropertyName» с «(нет)» на имя свойства класса. Оттуда вы можете настроить имя, если оно отображается, размер и т. Д. DataGrid привяжет его к вашему DataSource.
Кроме того, существует свойство DataGridView.AutoGenerateColumns, для которого можно установить значение false, чтобы не связывать все свойства объекта. Я тоже подумал, что это может помочь.