2015-07-24 5 views
0

Я новичок в asp.net, и это мой первый раз, когда я сталкиваюсь с повторителем asp. Это управление повторителем в странице .ascx То, что я хочу, чтобы связываться с C# кодКак я могу поместить мой код C# OnItemDataBound в свой код и привязать его к asp: repeater

в .ascx страницы:

<asp:Repeater ID="relatedFilesRepeater" runat="server" OnItemDataBound="RelatedFilesRepeater_ItemDataBound"> 
     <ItemTemplate> 
      <tr> 
       <td width="30%"> 
         <asp:Label ID="fileNameLabel" runat="server" /> 
       </td> 
       <td> 
         <asp:ImageButton ID="signatureButton" runat="server" ImageUrl="~/Images/Icons/16x16/_Base Image/Symbol Check 2.png" /> 
        </td> 
      </tr> 
     </ItemTemplate> 
</asp:Repeater> 

На верхней части моей страницы .ascx Я предрек свою OnItemDatabound функции C# следующим образом:

<script language="C#" runat="server"> 
    void RelatedFilesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
... 
} 

И он хорошо работает. Но это не эстетично и чисто, чтобы оставить код C# в .ascx Как я могу поместить свою OnItemDataBound функцию в свой код и привязать ее с помощью ретранслятора asp. Потому что я попытался просто скопировать свой код C# в код за файлом, и он не работает.

+0

Что вы имеете в виду под «не работает»? –

+0

нормально переместить эту функцию в файл cs, сделать это и объяснить, что не работает, а также показать заголовок файла .ascx – demonplus

+0

У меня есть метки, используемые на моей странице .ascx, такие как fileNameLabel и имя_файла, и они не распознаются в мой код за страницей. Поэтому при компиляции я получаю ошибки. – AnasB

ответ

0

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

var myLabel = (Label)FindControl("YouLabelId"); 
//Do Some Work 

Это будет применяться для остальных элементов управления в <asp:Repeater />

Дальнейшее чтение here

+0

Я попробую. Большое спасибо! – AnasB

0

Вы не можете получить доступ к этим этикетку непосредственно , Разум они обернуты внутри ретранслятора поэтому сначала вы должны найти ретранслятор ряд corrent затем использовать row.findcontrol и дать CTRl ID:

void RelatedFilesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
Label fileNameLabel= (Label)e.Item.FindControl("fileNameLabel"); 
ImageButton signatureButton= (ImageButton)e.Item.FindControl("signatureButton"); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^