Массив как источник данных 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";