2013-04-16 1 views
0

У меня есть объект ретранслятора, который выглядит следующим образомПоиск ДИВ в повторителя, и изменить его стиль элемент

<asp:Repeater id="rptSpecialNotes" runat="server"> 
        <headerTemplate><ol type="A"></HeaderTemplate> 
        <itemtemplate> 
           <li> 
           </li> 
         <asp:UpdatePanel ID="udpSpecialNotesRepeater" runat="server" UpdateMode="Always"> 
          <ContentTemplate> 

            <div id="specialNotes" name='<%# Eval("itemId") %>' runat="server"> 
             <asp:imagebutton runat="server" width="20" class="floatLeft" id="specialNotesItem" imageurl='<%# Eval("ImageUrl") %>' commandname="specialNotesImageChange" commandargument='<%# Eval("itemId") %>'></asp:imagebutton> 
             <span class="subject"><p><%# eval("Subject") %></p></span> 
             <br /><br /> 
             <p><%# Eval("AgendaNote")%></p> 
             <br /> 
            </div> 

          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID ="followAlongControl" EventName ="Tick" /> 
          </Triggers> 
         </asp:UpdatePanel> 
         <asp:Repeater id="specialNotesAttachmentsRepeater" OnItemCommand="specialNotesAttachmentRepeater_ItemCommand" runat="server" datasource='<%# Container.DataItem.Row.GetChildRows("attachmentRelation") %>' > 
          <itemtemplate> 
           <br /> 
           <a href='<%# Container.DataItem("attachmentPath") %>'><%# Container.DataItem("attachmentName") %></a>&nbsp;&nbsp; 
           </itemtemplate> 
         </asp:Repeater> 
        </itemtemplate> 
        <footerTemplate></ol></FooterTemplate> 
       </asp:Repeater> 

Я хочу, чтобы изменить цвет фона DIV «specialNotes» в зависимости от ImageUrl изображения кнопка. Поэтому, если он проверен, div будет серым, если нет, тогда я оставил бы его пустым.

Есть ли способ сделать это в коде с VB?

ответ

1

Вам не нужно «находить» div после загрузки страницы, вы можете сделать это, поскольку она привязана. Я полагаю, что когда вы говорите «если он проверен», вы ссылаетесь на кнопку изображения, действующую как флажок, и вы хотите изменить цвет в зависимости от местоположения (пути) изображения. Так что я бы это в DIV:

<div style='<%# doColor(Eval("ImageUrl")) %>'> 
    Content in the div 
</div> 

, а затем это в коде позади:

Public Function doColor(img As Object) As String 
    If img.ToString() = "MyPath" Then 
     Return "background-color:red" 
    Else 
     Return "background-color:green" 
    End If 
End Function 

, что путь, если ImageUrl равен «MyPath» на фоне вашего DIV будет красным, в противном случае это будет зеленым.

+0

Я не мог правильно это сделать. Я думаю, что я особенно озадачен тем, где я увольняю это событие? Делает ли makeColor каждый раз, когда создается div? или я увожу его в том же месте, где я делаю свою привязку данных? Не могли бы вы предоставить немного больше инструкций? Я должен упускать что-то ... – Lenigod

+0

Это называется каждый раз, когда создается div. Вам не нужно ничего делать везде, где вы привязываете ретранслятор. –

+0

Работал именно так, как мне это нужно. Большое спасибо! – Lenigod

1

Добавить runat="server" в свой тег div. Тогда ваш код позади, вы можете получить доступ к этому DIV с помощью:

udpSpecialNotesRepeater.FindControl("div")

на вашем мероприятии DataBound.

В jQuery все же проще сделать это. Вы можете просто захватить id div $("#specialNotes") и использовать функцию .attr, чтобы изменить ее фон.

+0

но вы не смогли бы захватить «specialNotes», потому что это не визуализируется как это, она отображается как «specialNotes_01» или w.e, после повторителя DataBind. Я не знаю, какой div я собираюсь схватить перед рукой. Добавьте к этому, вы не можете установить id на #eval ("itemId") там, потому что это синтаксис был бы неправильным. – Lenigod

+0

Это означает, что он отображается как элемент управления asp.net. Чтобы получить доступ к элементу управления asp.net, вы можете использовать его «IdOfControl.ClientId». В вашем случае это specialNotes.ClientId. – RiceRiceBaby

0

можно использовать:

Control divControl=e.Item.FindControl("divControl"); 

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

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