2009-09-21 2 views
0

데이터리스트 내에서 ASP 컨트롤에 어떻게 액세스합니까? 예를 들어, 현재는 HyperLink 컨트롤이나 ImageButton 컨트롤에 인라인 코드 또는 코드 숨김 파일로 액세스하려고하지만 현재 액세스 할 수 없습니다.데이터리스트 내에서 ASP 컨트롤에 액세스하기

<asp:DataList ID="DataList1" runat="server" AlternatingItemStyle-CssClass="altArtStyle"> 
     <HeaderTemplate> 
      <table> 
       <tr> 
        <td> 
         <asp:HyperLink ID="lnkTitle" runat="server" NavigateUrl="Default.aspx?order_by=title&direction=ASC" > 

         Title 
         </asp:HyperLink> <asp:ImageButton id="imgbtnTitle" src="/_images/hover-down.gif" runat="server"/> 
        </td> 

       </tr> 
      </table> 
     </HeaderTemplate> 

답변

0

에 달려 있습니다. 예를 들어, 런타임에 헤더를 변경하려면 객체 바인드 이벤트 중 하나에서이 데이터 목록 헤더와 같은 작업을 수행하고 하이퍼 링크에서 findcontrol을 수행 한 다음 해당 참조를 사용하십시오.

+0

짧은 코드 예를 들어 주시겠습니까? 내가 컨트롤을 찾는했지만 불만 '객체의 인스턴스로 설정되지 않은 개체 참조'있어. 데이터 세트를 바인딩 한 후 사용한 코드를 보여줍니다. 어둡게하여 ImageButton = imgbtnTitle의 FindControl ("imgbtnTitle") 경우로서 imgbtnTitle.ImageUrl = "/_images/hover-down.gif"그럼 imgbtnTitle.ImageUrl = "/_images/hover.gif" 의 ElseIf imgbtnTitle.ImageUrl = " /_images/hover.gif "Then imgbtnTitle.ImageUrl ="/_images/hover-down.gif " 끝내면 – contactmatt

+0

마치 제이슨이 덮은 것 같습니다. CType을 사용하여 컨트롤을 캐스팅해야 할 수도 있다고 덧붙입니다. 보십시오 : http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx – Steve

1

일반적으로 특정 행에 대한 컨트롤을 찾으려면 DataListItem 개체에서 FindControl을 호출해야합니다. 당신의 예에서의 FindControl은 다음 예에서와 같이, 헤더 행에서 작동합니다 : 당신이 라벨과 하이퍼 링크

private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
    { 
     if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) 
     { 
      ImageButton imgbutton = (ImageButton)e.Item.FindControl("imgbtnTitle"); 
      imgbutton.ToolTip = "abc"; 
     } 
    } 
1

같은, 당신은 내부의 ASP 컨트롤에 액세스 할 수 있습니다 데이터리스트 항목 데이터 바운드를 사용하여 데이터 목록

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     HyperLink TitleLink = (HyperLink)e.Item.FindControl("lnkTitle"); 
    } 

} 
0

예로 할 수있는

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound 
    If e.Item.ItemType = ListItemType.Header Then 
     Dim btn As ImageButton = e.Item.FindControl("imgbtnTitle") 
     If btn IsNot Nothing Then 
      ' Do stuff here. 
     End If 
    End If 
End Sub 
관련 문제