Массив как источник данных DataGrid: как настроить столбцы?

в моем приложении Windows Mobile .NET у меня есть простой массив объекта с данными, которые я хочу отобразить в моем DataGrid. Для этого я просто звоню:

myDataGrid.DataSource = myArray;

это работает, но у меня есть проблема с ним: он использует все свойства столбцов и использует имена свойств в качестве заголовков столбцов. Я не могу понять, как настроить две вещи:

  • выберите, какой набор свойств должен отображаться в виде столбцов (скажем, у меня есть ID, Name и Value свойство, я бы только хотел показать имя и значение);

  • переименуйте заголовки столбцов, чтобы иметь больше смысла (например, если свойство называется ID, отобразите заголовок столбца с надписью "Number").

возможно ли это вообще?

Как уже упоминалось, это в приложении Windows Mobile .NET (версия 2).

3 ответов


вам нужно установить 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

обязать Система.Окна.Формы.DataGrid для a строго типизированный массив объекты, объект должен содержать общедоступные свойства. Чтобы создать DataGridTableStyle, который отображает такой массив, устанавливает Свойство MappingName в classname[] где classname заменяется на имя класса. Также обратите внимание, что Свойстве mappingname является чувствительный к регистру.


Я не знаю, знаете ли вы название столбцов заранее? Но если это так, вы можете перейти в "Редактировать столбцы" вашего DataGridView и просто создать там свои столбцы. В категории" данные "измените" DataPropertyName "с" (none) " на имя свойства класса. Оттуда вы можете настроить имя, если оно видно, размер и т. д. DataGrid свяжет его с вашим источником данных.

кроме того, есть свойство "DataGridView.AutoGenerateColumns", который вы можете установить для false, поэтому вам не нужно связывать все свойства вашего объекта. Я тоже думаю, что это поможет.


в этом коде _im является объектом таблицы, и я связываю этот объект с DataGridView dgvItem после привязки я изменяю текст заголовка dgvItem по мере необходимости.

    dgvItem.Rows.Clear();
    dgvItem.DataSource = _im ;
    dgvItem.Columns[2].HeaderText = "Mobile Code";
    dgvItem.Columns[3].HeaderText = "Mobile Name";