我正在创建一个应用程序,它使用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 BindingListclientDataSource = 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中手动创建行.如何在链接到空数据源时显示"新项目"?我发现的所有示例都使用非空数据源.
AllowUserToAddRows
并AllowUserToDeleteRows
设置为true
.
这张照片显示了我的问题.使用数据源时缺少"第一行".输入DGV无法添加数据.
在查看MSDN时,我发现了这个:
如果DataGridView绑定到数据,则如果此属性和数据源的IBindingList.AllowNew属性都设置为true ,则允许用户添加行.
它似乎默认BindingList
具有此属性false
,所以这个小技巧修复了它:
public BindingList<Client> clientDataSource = new BindingList<Client>() { AllowNew = true };