Как получить доступ к элементам управления в макете списка? - PullRequest
12 голосов
/ 07 сентября 2008

Как мне установить свойство пользовательского элемента управления в ListView LayoutTemplate из кода?

<asp:ListView ...>
<LayoutTemplate>
<myprefix:MyControl id="myControl" ... />
</LayoutTemplate>
...
</asp:ListView>

Я хочу сделать это:

myControl.SomeProperty = somevalue;

Обратите внимание, что мой элемент управления находится не в ItemTemplate, а в LayoutTemplate, поэтому он существует не для всех элементов, он существует только один раз. Поэтому я должен иметь доступ к нему один раз, не для каждого элемента, связанного с данными.

Ответы [ 6 ]

18 голосов
/ 13 октября 2010
var control = (MyControl)myListView.FindControl("myControlId");

Это будет работать, но убедитесь, что вы делаете это после привязки данных, иначе шаблон LayoutTemplate не будет создан, что приведет к ошибке.

12 голосов
/ 22 августа 2009

Чтобы установить свойство элемента управления внутри LayoutTemplate, просто используйте метод FindControl в элементе управления ListView.

var control = (MyControl)myListView.FindControl("myControlId");
1 голос
/ 25 ноября 2009

На этот вопрос дан ответ в этом вопросе о переполнении стека:
Доступ к элементу управления внутри шаблона макета ListView

См. Комментарий к принятому ответу от tanathos.

Я знаю, что об этом спрашивали больше года назад, но это один из первых результатов поиска, который я использовал здесь, поэтому я хотел оставить ответ для всех, кто наткнулся на него.

1 голос
/ 07 сентября 2008

Используйте метод FindControl для каждого ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId");
0 голосов
/ 20 октября 2018

Если вам нужна версия VB.net, вот она:

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
0 голосов
/ 26 декабря 2009

Макет создается и запускает событие LayoutCreated, в котором говорится, что макет создан в системе.

Затем вы можете использовать listview.FindControl, чтобы получить ссылку на этот элемент управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...