Подтвердить что ты не робот

Как получить доступ к элементам управления в listview layouttemplate?

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

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

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

myControl.SomeProperty = somevalue;

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

4b9b3361

Ответ 1

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

var control = (MyControl)myListView.FindControl("myControlId");

Ответ 2

var control = (MyControl)myListView.FindControl("myControlId");

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

Ответ 3

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

var control = (MyControl)Item.FindControl("yourControlId");

Ответ 4

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

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

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

Ответ 5

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

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