Элементы ListView имеют DropDownList: как получить DataItem при изменении выбора?

Итак, у меня есть что-то вроде этого:

Моя настройка ListView

В ComboBox «Продукты» есть ListView, в котором отображаются новые элементы, которые добавляются, когда пользователь нажимает кнопку «Добавить», чтобы добавить выбранный продукт.

Когда пользователь делает выбор дескриптора продукта для продукта, мне нужно изменить свойство связанного объекта с привязкой к данным. Как мне получить доступ к этому объекту? У меня есть обработчик события SelectedIndexChanged данного ComboBox дескриптора продукта, но как мне получить DataItem строки, содержащей ComboBox, выбор которого был изменен?

Я подумал о событии ListView ItemCommand, но не понимаю, как его использовать в этом случае.

Я также видел этот пост, в котором в одном ответе упоминается хранение идентификаторов в скрытых полях: -dataitem">DropDownList внутри Repeater: как обработать SelectedIndexChange и получить DataItem?

Но в таком случае, как мне получить идентификаторы из этих скрытых полей?

Спасибо за вашу помощь!


person unnknown    schedule 30.10.2012    source источник
comment
Я только что понял, что вопрос, на который я ссылался, вероятно, имеет то, что мне нужно, в принятом ответе. проверю это   -  person unnknown    schedule 31.10.2012


Ответы (2)


Вам просто нужно привести NamingContainer из DropDownList:

var ddl      = (DropDownList) sender;
var item     = (ListViewItem) ddl.NamingContainer;
var rowView  = (DataRowView)  item.DataItem;
person Tim Schmelter    schedule 30.10.2012
comment
Большое спасибо. Это привело меня к правильному ответу. В моем случае DataItem имеет значение Null, поэтому я использовал item.DataItemIndex для индексации коллекции, к которой я привязываюсь. - person unnknown; 15.11.2012

Ответ Тима Шмельтера привел меня к этому ответу:

            Dim comboBox = CType(sender, RadComboBox)
            Dim item = CType(comboBox.NamingContainer, ListViewItem)
            Dim myListItem = myCollection(item.DataItemIndex)
person unnknown    schedule 15.11.2012