Доступ к родительскому DataItem во вложенном ListView - PullRequest
2 голосов
/ 31 марта 2010

Итак, у меня есть два списка просмотра; одно вложено в другое.

Родитель привязывается к коллекции объектов, содержащих поля, такие как MaxPrice, MinPrice и Предлагаемые продукты.

Вложенный объект связывается с коллекцией Предлагаемые продукты родительского элемента.

Как я могу ссылаться на MaxPrice и MinPrice во вложенном списке? Это вообще возможно?

Если вам нужны какие-либо разъяснения, оставьте мне комментарий, и я обновлю свой вопрос.

Спасибо!

Редактировать: это ASP.NET ListView

Ответы [ 5 ]

6 голосов
/ 30 сентября 2010

У меня была та же проблема, и я нашел другое решение, которым я хотел бы поделиться.

Из события ItemDataBound для вложенного дочернего элемента ListView вы можете получить ссылку от родителя, выполняющего что-то вроде этого:

ListViewDataItem CurrentParentItem = (ListViewDataItem)e.Item.Parent.Parent.Parent;
ParentObject parentObject = CurrentParentItem.DataItem as ParentObject
//Then you can access to parentObject.MaxPrice & parentObject.MinPrice

Надеюсь, что это поможет людям с той же проблемой

1 голос
/ 21 февраля 2013

Если вы установили DataKeyNames в родительском элементе, вы можете получить к нему доступ следующим образом

((ListView)Container.Parent.Parent.Parent.Parent).DataKeys[((ListViewDataItem)Container.Parent.Parent.Parent).DataItemIndex][0]
1 голос
/ 31 марта 2010

Если ваш класс Предлагаемый продукт будет иметь ссылку на родительский класс X (так что у вас будет модель двунаправленных данных: X has a collection of SuggestedProducts and SuggestedProduct has an object reference to X), вы можете задать свойства Предлагаемого продукта, например MinPrice { get {return parentX.MinPrice;} } (и, возможно, также установить), а затем использовать Eval("MinPrice") (и, возможно, также Bind) в вашем вложенном ListView.

Так же, как идея, если модификация модели вашего класса является реальной и простой возможностью.

1 голос
/ 23 сентября 2010
0 голосов
/ 31 марта 2010

OK; У меня есть решение, но я ненадолго оставлю его открытым, на случай, если кто-нибудь сможет найти лучшее решение.

По сути, я беру значения MinPrice и MaxPrice и помещаю их в HiddenField вне вложенного ListView.

Затем внутри вложенного я сверляю (Container.Parent), нахожу HiddenField, а затем извлекаю его значение.

...