将控件绑定到对象集合

本文关键字:对象 集合 绑定 控件 | 更新日期: 2023-09-27 18:02:37

我需要数据绑定方面的帮助。想象一下这种情况。我有两个类,一个叫同位素,另一个叫光子。类同位素包含绑定列表光子。我也有一个静态类StaticVariables,我把BindingList同位素。现在,我想做一个表格,让我可以浏览同位素列表。我创建了一个组合框cb同位素,我绑定到静态变量。同位素:

 CBIsotope.DataSource = StaticVariables.Isotopes;
 CBIsotope.ValueMember = "IsotopeName";
 CBIsotope.DisplayMember = "IsotopeName";

到目前为止,一切正常。现在我要创建一个datagridview DGVPhotons,它将显示所选同位素的所有光子。我的第一反应是沿着这条路做点什么

DGVPhotons.DataSource = StaticVariables.ListOfIsotopes.Photons

当然是行不通的。我尝试的另一件事是使用ComboBox的SelectedItem属性:

(1)

DGVPhotons.DataSource = (CBIsotope.SelectedItem as Isotope).Photons;

这个工作,但不像我想的那么好。如果我在加载时这样做,什么都不会发生,因为ComboBox是空的。如果我在ComboBox中选择一个项目时这样做,那么它就能工作,但当我在ComboBox中改变选择时,DataGridView保持不变。解决方案是将第(1)行放在组合框的SelectedIndexChanged中,但对我来说这似乎是一种蛮力方法,我觉得我的方法从根本上是错误的……有没有更优雅的解决方案?

将控件绑定到对象集合

好的,这里的关键是使用DataBind解决方案。在你改变了元素的source之后,不要忘记使用DataBind方法,以便绑定新的数据。

而且,在PageLoad事件上,不要忘记使用IsPostBack符号,以便仅在第一次处理请求时初始化页面。