2013-03-07 6 views
0

Мне нужна помощь в привязке данных. Представьте себе эту ситуацию. У меня есть два класса, один по имени Изотоп, другой по имени Photon. Изотоп класса содержит BindingList Photons. У меня также есть статический класс StaticVariables, где я помещаю BindingList Isotopes. Теперь я хочу создать форму, которая позволит мне просмотреть список изотопов. Я создал выпадающий CBIsotopes, что я обязан StaticVariables.Isotopes:Управление привязкой к коллекции объектов

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

До сих пор все работает. Теперь я хочу создать datagridview DGVPhotons, который покажет все фотоны выбранного изотопа. Мой первый инстинкт состоял в том, чтобы что-то сделать по пути

DGVPhotons.DataSource = StaticVariables.ListOfIsotopes.Photons 

который, конечно, не работает. Еще одна вещь, которую я пытался это использовать SelectedItem собственность в ComboBox:

(1)

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

Это работает, но не так хорошо, как хотелось бы. Если я делаю это во время загрузки, ничего не происходит, потому что ComboBox пуст. Если я это сделаю, когда элемент действительно выбран в ComboBox, то он работает, но по мере того как я изменяю выделение в ComboBox, DataGridView остается прежним. Решение было бы поставить строку (1) в SelectedIndexChanged из ComboBox, но для меня это похоже на метод грубой силы, и я чувствую, что мой подход в корне неверен ... Есть ли еще более элегантное решение?

ответ

0

ОК, ключом здесь является использование решения DataBind. После того, как вы измените source вашего элемента, не забудьте использовать метод DataBind после того, как привязать новые данные.

А также, на мероприятии PageLoad, не забудьте использовать знак IsPostBack, чтобы инициализировать страницу только тогда, когда запрос обрабатывается в первый раз.

Смежные вопросы