使用 DataGridview 编辑列表属性

发布于 2024-08-23 04:23:55 字数 1079 浏览 8 评论 0原文

好的,我有我的自定义类:

    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 中更改 Value 和 Id 时,它们不会保存到出价列表中,id 始终为 0,value 为“”。

我怎样才能做到这一点? 我是否需要实现 FileItem 的某些接口以允许编辑属性?

DGV 的 ReadOnly 设置为 false,与所有列相同。启用编辑、删除和更改。

Ok, I have my custom class:

    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>();

And I have DatagridView1 with DataSource set to FilesystemEntries:

 binding.DataSource = FilesystemEntries;

Already I can Add and remove rows - these chnages are reflected on collection.
However, Value and Id are not saved into bidning list when i change them in DataGridView, id is always 0 and value is "".

How can I make this work?
Do I need to implement some interface to FileItem to allow editing properties?

ReadOnly of DGV is set to false, same to all columns. Editing, Deleting and Changing are enabled.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红颜悴 2024-08-30 04:23:56

问题解决了,它不起作用,因为我将 AutoGenerateColumns 设置为 false,并且添加了两列,其中我忘记设置 DataSource 属性。现在它工作了。

Problem solved, it was not working because i set AutoGenerateColumns to false, and I added two columns in which i forgot to set DataSource property. Now its working.

瞳孔里扚悲伤 2024-08-30 04:23:56

您是否单击了正在编辑的单元格,让 DataGridView 知道您已完成对单元格的编辑?默认情况下,单元格的值不会被推送到底层对象,直到您单击远离它。

Have you clicked away from the editing cell to let the DataGridView know you are done editing the cell? By default, the cell's value will not be pushed to the underlying object until you click away from it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文