Как определить данные, используемые для заголовков столбцов DataGridview при использовании списка объектов в C #? - PullRequest
1 голос
/ 09 марта 2011

Если вы связываете DataGridview (winform) со списком объектов, можете ли вы определить, какое свойство объекта, строку, следует использовать для заголовков столбцов?

В данный момент используются имена свойств из объектов.

или возможно связать отдельный источник данных, другой объект, с заголовками столбцов с целью определения этих заголовков?

UDATE

Пример

public string field_one{get;set;}

Отображается как "field_one" в качестве заголовка столбца.Мне бы хотелось ...

public string header_one{get;set;}
public string field_one{get;set;}

row.header_one="Friendly Header Title";
...........
List<row> rows = new List<row>();

чтобы заголовок столбца был "Friendly Header Title"

или иметь список заголовков в отдельном объекте, список объектов или другой списокоснованный тип.

пример

class header...
{
...
 public string header_column_one{get;set;}
..
}

....

class row....
{
...
 public string field{get;set;}
..
}

....... ........

header.header_column_one="Nice Friendly Header"

List<row> rows = new List<row>();

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Вы можете использовать атрибут displayname для настройки заголовков, которые будут отображаться в представлении данных.

В вашем классе вы можете определить каждое свойство следующим образом

[DisplayName("Title")]
public string Something{get;set;}

Тогда «Заголовок» будет показан в качестве заголовка для этого свойства в сетке. Используя этот способ, вы устанавливаете «заголовок по умолчанию» для всех наборов данных в вашем приложении, которые связаны с коллекцией этого класса.

РЕДАКТИРОВАТЬ:

Ну, я думаю, что будет сложно изменить атрибуты во время выполнения, вместо этого вы можете сделать что-то вроде

GridName.Columns["Something"].HeaderText = "Title"

РЕДАКТИРОВАТЬ2:

Хорошо, вы хотите сохранить информацию об имени столбца в другом классе или объекте. Тогда вы можете попробовать что-то вроде этого

public static void ChangeHeaders(DataGridView dataGrid, Dictionary<String, String> data)
        {
            if (data == null)
            {
                return;
            }
            Dictionary<string, string>.Enumerator enumerator = data.GetEnumerator();
            while (enumerator.MoveNext())
            {
                try
                {
                    dataGrid.Columns[enumerator.Current.Key].HeaderText = enumerator.Current.Value;
                }
                catch (NullReferenceException e)
                {
                    throw new ArgumentException("The column " + enumerator.Current.Key + " does not exist");
                }
            }
        }

Эта функция получает объект datagridview и словарь строк / строк. Ключ словаря - это имя свойства, а значение - текст, который вы хотите в заголовке. Построить словарь, вызвать функцию и работа сделана.

0 голосов
/ 09 марта 2011

Если я правильно читаю ваш вопрос, вы спрашиваете об установке заголовков для столбцов. HeaderText объекта DataGridViewColumn - ваш билет.

MSDN Поиск "DataGridViewColumn"

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.aspx

...