DataGridView缺少具有空数据源的新行

 Fabio_Ho_275 发布于 2023-02-10 13:37

我正在创建一个应用程序,它使用DataGridView创建和修改稍后将导入系统的本地List.它应该由用户编辑(在DGV中单击和写入),它还应该支持从csv导入,这意味着我需要DGV和数据源之间的双向同步.

我已将DGV的DataSource设置为BindingList如下所示:

//In my seperate Client class-file
public class Client
{
    private string _name;
    private string _mac;
    private string _status;

    public Client(string pcnavn, string MAC)
    {
        _pcnavn = pcnavn;
        _mac = mac;
    }

    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }

    public string MAC
    {
        get
        {
            return _mac;
        }
        set
        {
            _mac = value;
        }
    }

    public string Status
    {
        get
        {
            return _status;
        }
        set
        {
            _status = value;
        }
    }
}

//In my mainform class

public BindingList clientDataSource = new BindingList();

public MainForm()
{
InitializeComponent();
//clienDataGridView.AutoGenerateColumns = false; //The duplicate columns where fixed by setting DataPropertyName for all columns.
clientDataGridView.DataSource = clientDataSource;
}

使用这种方法,生成DGV,但它是空的(仅标题),因此用户无法使用DGV添加行.没有DataSource,它会像SQL编辑器一样显示一个空白行,这样我就可以在DGV中手动创建行.如何在链接到空数据源时显示"新项目"?我发现的所有示例都使用非空数据源.

AllowUserToAddRowsAllowUserToDeleteRows设置为true.

这张照片显示了我的问题.使用数据源时缺少"第一行".输入DGV无法添加数据. DGV

1 个回答
  • 在查看MSDN时,我发现了这个:

    如果DataGridView绑定到数据,则如果此属性和数据源的IBindingList.AllowNew属性都设置为true ,则允许用户添加行.

    它似乎默认BindingList具有此属性false,所以这个小技巧修复了它:

    public BindingList<Client> clientDataSource = new BindingList<Client>() { AllowNew = true };
    

    2023-02-10 13:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有