Использует для OnItemDataBound
Что бы вы реально использовали OnItemDataBound для повторителя?
7 ответов
"Это событие предоставляет вам последнюю возможность получить доступ к элементу данных, прежде чем он будет отображаться на клиенте. После того, как это событие инициировано, элемент данных обнуляется и больше не доступен".
~ http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.onitemdatabound.aspx
Одним из применений может быть генерация динамического управления на основе информации, которая доступна только из связанного элемента данных в то время, когда он связан с повторителем.
Я использовал его, когда мне нужно было немного помассировать данные для каждого элемента в репитере.
Это необходимо, если вы хотите настроить отдельный элемент в шаблоне с помощью динамических элементов управления или данных, которые не были частью набора результатов, который вы изначально привязали к повторителю.
Думайте об этом так. Когда ваш элемент создается, все события OnDataBinding запускаются для этого конкретного элемента. Может быть много вещей, которые создают один элемент, поэтому можно вызывать множество событий OnDataBinding. Как только все это сделано, это событие, которое запускается, поэтому вы можете применить некоторые последние "штрихи", и все события OnDataBinding будут выполнены в это время.
Например. Ваш предмет заполняет 10 полей данных и делает все виды вещей, когда привязан. После того, как все эти данные заполнены, вы хотите проверить определенные фрагменты этих данных, которые теперь были созданы, и установить что-то для всего элемента, например, цвет всей строки или некоторые значки на основе данных из всего элемента.
Я нахожу синтаксис привязки данных трудным для чтения и отладки. Я не думаю, что я когда-либо делал с OnItemDataBound что-либо, что я не смог бы сделать, поместив выражение привязки данных в разметку, но если я захочу изменить его позже, мне лично будет намного проще просто установить точка останова в OnItemDataBound, а затем использовать немедленное окно, чтобы зафиксировать то, что я хочу сделать. Я также приверженец явно исчезающего (например, Ruby) изречения о том, что код и разметка должны быть отдельными.
Я использовал его для реализации вложенного повторителя. В обработчике событий ItemDataBound внешнего повторителя вы запускаете код для привязки данных к экземпляру текущего элемента внутреннего повторителя.