2013-11-02 10 views
-1

У меня есть управление репитером asp, я привязываю источник данных от загрузки страницы, если есть данные, все работает хорошо, но когда у меня нет данных для отображения, я хочу получить доступ к шаблону нижнего колонтитула, чтобы показать ярлык: нет доступных данных "Bind dataSource on Page_Load

я попробовать с этим кодом:

Label lblTotal = (Label)repeaterAccessFooterControl.Controls[repeaterAccessFooterControl.Controls.Count - 1].FindControl("lblTotal"); 

но repeaterAccessFooterControl.Controls.Count всегда = 0 ..

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

как я могу достичь этого ??

+0

Слишком рано находить элемент управления внутри репитера. Ознакомьтесь с [Обзор жизненного цикла страницы ASP.NET] (http://msdn.microsoft.com/en-us/library/ms178472.ASPX#data_binding_events_for_databound_controls), чтобы узнать, как это работает. – afzalulh

+0

Отъезд Это http://www.dotnetcurry.com/ShowArticle.aspx?ID=271 –

ответ

0

Убедитесь, что когда у вас нет данных, чтобы показать, что вы связываете пустую коллекцию с вашим ретранслятором, а не null значение. Затем вы можете ваш контроль с FindControlRecursive, как это:

var lblTotal = FindControlRecursive(<<your_repater_control>>, "lblTotal") as Label; 

и вот определение FindControlRecursive

public Control FindControlRecursive(Control root, string id) 
     { 
      return root.ID == id ? root : (from Control c in root.Controls select FindControlRecursive(c, id)).FirstOrDefault(t => t != null); 
     } 

С уважением, Урос

+0

Мне нужно сделать это от загрузки страницы, а не fromn ItemDataBound – BusinessGirl

+0

Я пересмотрел свой ответ, вы должны поместить этот код после вызова DataBind. –