некоторые члены моего класса <T>не включаются в представление данных, привязанное к BindingList <T> - PullRequest
0 голосов
/ 18 сентября 2009
public class ANote{
    public string NoteId = "";
    public string Note = "";
    public string NoteCollector = "";
    public DateTime NoteCollectionDate = DateTime.MinValue;
    public string NoteCollectionDay {
    get { return NoteCollectionDate.toString("MM/dd/yyyy") ; }
    }
    public string NoteCollectionTime {
    get { return return NoteCollectionDate.toString("hh/mm tt"); }
    }
    public DateTime ADate = DateTime.Now;
    public double AAmount = 0.0D;
    public string AName = "";
    }

и список обязательных списков;

Также есть сетка с набором DataGridTExtBoxColumns, которые я пытаюсь привязать к приведенному выше (уже заполненному) списку, например:

colDate.DataPropertyName ="NoteCollectionDay";
colTime.DataPropertyName = "NoteCollectionTime";
colName.DataPropertyName = "NoteCollector";
colADate.DataPropertyName = "ADate";
colAAmount.DataPropertyName = "AAmount";
colAName.DataPropertyName = "AName";
colNotes.DataPropertyName = "Note";

grdNotes.AutoGenerateColumns = false;
grdNotes.DataSource = aList;

Но во время выполнения только мои столбцы colDate и colTime заполняются правильно. Все остальные пустые. Когда я специально смотрю на Grid.Rows[idx].Cells[idx].Value для других столбцов, все это пусто.

Также, если для AutoGenerateColumns указано значение true, я вижу дополнительный столбец NoteID, который также заполнен правильно, но поля ANote, Amount, ADate, AName и Note по-прежнему не заполнены!

Нет ничего плохого в данных в списке ... все члены класса имеют допустимые значения.

Если я что-то упустил. Похоже, что это проблема с BindingList или DataGridView. Если нет, то есть идеи, как это отладить ... это довольно простой тестовый пример!

1 Ответ

4 голосов
/ 18 сентября 2009

Вы ссылаетесь на данные Свойство Имя, поэтому будут работать только свойства?

Остальные поля. Попробуйте преобразовать их в авто свойства:

public string Note { get; set; }

Также обратите внимание, что BindingList будет уведомлять подписчиков только об изменении содержимого самого списка, а не о свойстве объекта, содержащегося в списке.

Если вы хотите добиться этого, вы хотите, чтобы ваш объект реализовал INotifyPropertyChanged и инициировал уведомление в методе set свойства.

...