2013-09-03 3 views
2

NET. 내가 여기에 SeparatorTemplate 내부에있는 뒤에 코드에서 div 태그에 액세스하기 위해 시도하고 내 영문 코드 나는 사람들의 this.ControlsDataList1.Controls하지만 모두 내가 알고이 사업부를 포함하지 않는 접근 시도코드 숨김 aspx 컨트롤에 액세스하는 방법?

<div> 
    <asp:DataList ID="DataList1" runat="server"> 
     <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle> 
     <HeaderTemplate> 
      <table width="900px"> 
       <tr> 
        <td width="300px"> 
         <b>Name</b> 
        </td> 
        <td width="300px"> 
         <b>Account No</b> 
        </td> 
        <td width="300px"> 
         <b>Company</b> 
        </td> 
       </tr> 
      </table> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <table width="900px"> 
       <tr> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "Name")%> 
        </td> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "AccountNo")%> 
        </td> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "Company")%> 
        </td> 
       </tr> 
      </table> 
     </ItemTemplate> 
     <HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle> 
     <SeparatorTemplate> 
      <div id="divSeprator" runat="server">//This div tag i want to access in the code behind 
      <br /> 
      </div> 

     </SeparatorTemplate> 
    </asp:DataList> 
</div> 

입니다 SepratorTemplate에 있지만 컨트롤을 찾을 수있는 것이 없기 때문에 해당 템플릿에서 컨트롤에 액세스하는 방법을 모르겠습니다.

+0

당신이 달성하려고하는 무엇을? –

+0

실제로 내가 뒤에있는 코드에서 조건을 확인하고 그에 따라 div 태그를 적용하려면 각 행 다음에 2 행 뒤에 구분 기호 서식 파일을 적용하려고합니다 –

답변

3
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    // Find the div control as htmlgenericcontrol type, if found apply style 
    System.Web.UI.HtmlControls.HtmlGenericControl div = (System.Web.UI.HtmlControls.HtmlGenericControl)e.Item.FindControl("DivContent"); 

    if(div != null) 
     div.Style.Add("border-color", "Red"); 

} 
+2

'e.Item.ItemType == ListItemType.Separator'에 NullReferenceException을 피하기 위해 검사를 추가하거나 타입 캐스팅을 위해'as' 구문을 사용하는 것이 더 좋을까요 –

+0

감사합니다. –

-1

당신은 당신은에서 찾을 필요가있을 것이다 당신이

HtmlGenericControl div = HtmlGenericControl("div") 
+0

이것은'HtmlGenericControl ("div") '함수가 아닙니다. 데이터리스트 또는 상위 데이터리스트 항목에서 컨트롤을 찾아야합니다. –

0

를 사용하여 액세스 할 수 있습니다 태그 RUNAT는 = "절단"하고 ID를 그에게 그런

<div id="div" runat="server"> 

을 줄 필요가 datalist 행은 아래와 같습니다.

HtmlGenericControl div = (HtmlGenericControl)yourDataList.Items[0].FindControl("dvSeparator"); 

당신은 당신이 처리를 위해 사업부를 발견하고자하는 .Items[]의 데이터 목록 항목 (행)의 인덱스를 전달할 수 있습니다.

모든 데이터 목록 항목에서 div를 처리하려면 데이터 분석가의 항목 데이터 바운드 이벤트에서 @Upvote로 할 수 있습니다. MarkAnswer가 답변에서 제안했습니다. 0이 항목 인덱스입니다

0
HtmlGenericControl divSeprator = (HtmlGenericControl)DataList1.Items[0].FindControl("divSeprator"); 

.

또는 단지 DataList1_ItemDataBoud 이벤트 및 사용 바인딩 :

if(e.Item.ItemType == ListItemType.Separator) 
    HtmlGenericControl divSeprator = (HtmlGenericControl)e.Item.FindControl("divSeprator"); 
+0

이것은 매력 덕분으로 일했습니다. –

관련 문제