Как привязать заголовок ObjectListview к объекту?

У меня есть один ObjectListview, который должен показывать разные модели, пока пользователь переключает некоторые элементы управления. Таким образом, использование дизайнера форм не позволяет установить заголовки / столбцы. Мне нужно их динамически переключать.

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

1 ответ

Решение

Если вы посмотрите в кулинарную книгу, то номер 29, вероятно, то, что вам нужно. http://objectlistview.sourceforge.net/cs/recipes.html
(Ниже взято из этого источника).

E сть Generator класс, в который вы можете передать свою модель, и он автоматически создаст столбцы на основе открытых свойств.

Generator.GenerateColumns(this.olv1, typeof(MyModelClass), true);

Вы даже можете улучшить свою модель, используя OLVColumn атрибутов.

public class MyClass {

    [OLVColumn(Width = 150)]
    public DateTime When { get; set; }

    [OLVColumn(DisplayIndex = 5, Width = 75, TextAlign = HorizontalAlignment.Right)]
    public decimal Rate { get; set; }

    [OLVColumn("From", DisplayIndex=1, Width = 50, TextAlign = HorizontalAlignment.Center)]
    public string FromCurrency { get; set; }

    [OLVColumn("To", DisplayIndex = 3, Width = 50, TextAlign = HorizontalAlignment.Center)]
    public string ToCurrency { get; set; }

    [OLVColumn("Amount", DisplayIndex = 2, AspectToStringFormat = "{0:C}", Width = 75, TextAlign = HorizontalAlignment.Right)]
    public decimal FromValue { get; set; }

    [OLVColumn("Amount", DisplayIndex = 4, AspectToStringFormat = "{0:C}", Width = 75, TextAlign = HorizontalAlignment.Right)]
    public decimal ToValue { get; set; }

    [OLVColumn(IsVisible = false)]
    public string UserId { get; set; }
}
Другие вопросы по тегам