我正在尝试将集合绑定到DataGridView。事实证明,虽然EditMode设置为EditOnKeystrokeOrF2,但用户无法在此DataGridView中编辑任何内容。
这是简化的代码:
public Supplies()
{
InitializeComponent();
List<string> l = new <string>();
l.Add("hello");
this.SuppliesDataGridView.DataSource = l;
}
当我将集合类型更改为SortableBindingList,Dictionary或甚至使用BindingSource时,它也不起作用。
这里有什么不妥?
答案 0 :(得分:5)
对我来说,以下方法按预期工作:
进入表单代码并将CustomCollection绑定到BindingSource
var cc = new CustomCollection();
bindingSource1.DataSource = cc;
<强>说明强>:
DataGridView只是链中允许更改,添加和删除列表中的对象(或CustomCollection)的最后一部分。 BindingSource中还有一个属性AllowNew
,ICollection
接口的属性IsReadOnly
必须设置为false
才能进行编辑。最后但同样重要的是,集合中类的属性必须具有允许更改值的公共setter方法。
答案 1 :(得分:2)
试试这个:
public class CustomCollection { public string Value { get; set; } }
public Supplies()
{
InitializeComponent();
List<CustomCollection> l = new List<CustomCollection> { new CustomCollection { Value = "hello" } };
this.SuppliesDataGridView.DataSource = l;
}
答案 2 :(得分:0)
一旦设置了DataSource属性,您就需要触发 DataBind()
方法。
this.SuppliesDataGridView.DataSource = l;
this.SuppliesDataGridView.DataBind();
击> <击> 撞击> 的更新:强>
正如您在评论中正确指出的那样,此控件不存在DataBind()方法。
此链接可能会提供一些有用的信息:http://msdn.microsoft.com/en-us/library/fbk67b6z%28v=VS.90%29.aspx