Редактирование свойств списка с помощью DataGridview

Хорошо, у меня есть свой собственный класс:

    public class FileItem : INotifyPropertyChanged
    {
        int id=0;
        string value="";
        public int Id
        {
            get { return id; }
            set { id = value; Changed("Id"); }
        }
        public string Value
        {
            get { return value; }
            set { this.value = value; Changed("Value"); }
        }


        public event PropertyChangedEventHandler PropertyChanged;
        void Changed(string name)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

 public BindingList<FileItem> FilesystemEntries = new BindingList<FileItem>();

И у меня есть DatagridView1 с DataSource, установленным в FilesystemEntries:

 binding.DataSource = FilesystemEntries;

Я уже могу добавлять и удалять строки - эти изменения отражаются на коллекции. Однако значение и идентификатор не сохраняются в списке ставок, когда я меняю их в DataGridView, идентификатор всегда равен 0, а значение равно «».

Как я могу заставить это работать? Нужно ли мне реализовать какой-то интерфейс для FileItem, чтобы разрешить редактирование свойств?

Только для чтения DGV установлено значение false, одинаковое для всех столбцов. Редактирование, удаление и изменение включены.


person toomasz    schedule 25.02.2010    source источник
comment
Ваш пример кода отлично работает для меня. Возможно, проблема в предложении Зака. Или вы что-то нам не сказали? Вы используете прямую привязку или используете источник привязки (моя привязка была прямой)   -  person David Hall    schedule 26.02.2010


Ответы (2)


Проблема решена, она не работала, потому что я установил для AutoGenerateColumns значение false и добавил два столбца, в которых я забыл установить свойство DataSource. Теперь он работает.

person toomasz    schedule 25.02.2010

Вы щелкнули мышью вдали от ячейки редактирования, чтобы сообщить DataGridView, что вы закончили редактирование ячейки? По умолчанию значение ячейки не будет передано базовому объекту до тех пор, пока вы не щелкнете его.

person Zach Johnson    schedule 25.02.2010