2010-07-20 3 views
4

HTML 요소에 액세스 할 때 문제가 있습니다. 서버 측에서 이러한 요소는 리피터 제어 itemTemplate에 있습니다.Repeater ItemTemplate 서버 쪽

간단한 코드 : 예를 들어

<asp:Repeater ID="rptList" runat="server" onitemcreated="rptList_ItemCreated"> 
    <HeaderTemplate> 
       <div id="accordionGiftLelo"> 
    </HeaderTemplate> 
    <ItemTemplate> 


         <div class="set"> 
         <div class="title"><img src='<%# Eval("TitleImgUrl")%>' runat="server" width="198" height="29" /></div> 
         <div ID="RepeaterBG" class="content" style="background-color:<%# Eval("ContentBackground")%>"> 
          <%--<a href='<%# Eval("ContentUrl")%>'><img src='<%# Eval("ContentImgUrl")%>' alt="Embroidered Devil Eyes" width="198" height="198" border="0" /></a>--%> 
          <div style="width:198"><asp:Literal ID="Literal1" runat="server" Text='<%# Eval("ContentImgUrl")%>'></asp:Literal></div> 
         </div> 
         </div> 

    </ItemTemplate> 

    <FooterTemplate> 
         </div> 
    </FooterTemplate> 

    </asp:Repeater> 

가 어떻게 액세스 할 수 있습니다 RepeaterBG DIV?

답변

0

다음은 서버 측 컨트롤에 액세스하여 데이터를 적용하는 방법에 대한 예입니다. RunAt = "server"를 div 태그에 추가하십시오.

하여 ItemDataBound 이벤트에 대한 참조를 추가

rptList.ItemDataBound += rptList_ItemDataBound; 

private void rptList_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return; 

    HtmlControls.HtmlGenericControl RepeaterBG = (HtmlControls.HtmlGenericControl)e.Item.FindControl("RepeaterBG"); 

    Data.DataRowView dr = (Data.DataRowView)e.Item.DataItem; 

    RepeaterBG.Style.Add("background-color", dr("ContentBackground")) 
} 

당신은 대신 "평가를 <% 번호"사용하는, 당신의 모든 컨트롤에 대해이 작업을 수행하는 경우, 당신은 코드를 훨씬 쉬울 것입니다 발견 할 것이다 유지하다.

+1

감사합니다. 나는 VB가 싫어. 그래서 나는 C#을 사용하는 것을 이해하지 못했다. 어쨌든 덕분에 .. –

+0

나는 이것을 C#으로 바꿨다. :) –

+0

감사합니다 카터 ... 정말 당신의 도움을 주셔서 감사합니다 나는 그것을 시도합니다 .. –

0

repeater의 OnItemDataBound 이벤트를 사용하십시오. 또한 RepeaterBG div에 runat = "server"속성을 추가해야합니다.

using System.Web.UI.HtmlControls; 

    protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item) 
     { 
      var div = (HtmlGenericControl)e.Item.FindControl("RepeaterBG"); 

     } 
    } 
+0

는 스타일 = 삭제 "배경 색을 : <% # 평가 ("ContentBackground ") %>"부분은 서버 컨트롤에이 방법을 바인딩하지 않습니다 항상 – Equiso

+0

을 작동하지만이 작업을 수행해야합니다. 다른 방법으로 서버 측에서이 문제를 해결할 수 있습니까? –

+0

Michixo가 코드를 도와 주셔서 감사합니다 ... –

0

그에게 당신의 스타일 태그 주위에 따옴표 :

<div ID="RepeaterBG" class="content" style='background-color:<%# Eval("ContentBackground")%>'> 
+0

도움을 주셔서 rick schott ... 카터로 설명하는 내 문제를 해결 어떤 식 으로든 .. –