我正在尝试绑定List
到DataGridView控件,我没有运气创建自定义绑定.
我试过了:
gvProgramCode.DataBindings.Add(new Binding("Opcode",code,"Opcode"));
它抛出一个异常,说该属性名称没有找到任何内容.
相关列的名称是"操作码".List
操作码中的属性名称.
回答编辑:问题是我的类中没有可绑定字段作为属性,只有公共字段......显然它不反映字段,只反映属性.
网格上的属性是否也绑定到Opcode?如果你想直接绑定到List,你只需要DataSource = list.数据绑定允许自定义绑定.你想要做除数据源之外的其他事情吗?
你得到一堆空行?自动生成的列有名称吗?您是否已验证数据是否在对象中(而不仅仅是string.empty)?
class MyObject { public string Something { get; set; } public string Text { get; set; } public string Other { get; set; } } public Form1() { InitializeComponent(); ListmyList = new List (); for (int i = 0; i < 200; i++) { string num = i.ToString(); myList.Add(new MyObject { Something = "Something " + num , Text = "Some Row " + num , Other = "Other " + num }); } dataGridView1.DataSource = myList; }
这应该工作正常......
我不能真正告诉您要对所包含的示例做什么,但如果您只想列出对象,则绑定到通用的对象列表是相当简单的:
private BindingSource _gridSource; private BindingSource GridSource { get { if (_gridSource == null) _gridSource = new BindingSource(); return _gridSource; } } private void Form1_Load(object sender, EventArgs e) { Listlist = new List (); list.Add(new FluffyBunny { Color = "White", EarType = "Long", Name = "Stan" }); list.Add(new FluffyBunny { Color = "Brown", EarType = "Medium", Name = "Mike" }); list.Add(new FluffyBunny { Color = "Mottled", EarType = "Short", Name = "Torvald" }); GridSource.DataSource = list; dataGridView1.Columns["EarType"].Visible = false; //Optionally hide a column dataGridView1.DataSource = GridSource; }
如果您只想显示List类型的特定属性,则应该能够使不需要的列不可见.
从技术上讲,你真的不需要创建BindingSource,但是当我进行更新或更改时,我发现它更容易.
希望这可以帮助.