0

我需要数据绑定方面的帮助。想象一下这种情况。我有两个类,一个名为 Isotope,另一个名为 Photon。同位素类包含 BindingList 光子。我还有一个静态类 StaticVariables,我在其中放置了 BindingList 同位素。现在,我想制作一个表格,让我可以浏览同位素列表。我创建了一个组合框 CBIsotopes,绑定到 StaticVariables.Isotopes:

 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) 行放在 ComboBox 的 SelectedIndexChanged 中,但这对我来说似乎是一种蛮力方法,我觉得我的方法从根本上是错误的......有没有更优雅的解决方案?

4

1 回答 1

0

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

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

于 2013-03-07T09:12:19.100 回答