2009-09-21 8 views
0

Comment accéder à un contrôle ASP dans un datalist. Par exemple, je voudrais, mais ne peux pas actuellement, accéder au contrôle HyperLink ou au contrôle ImageButton par le code inline, ou dans le fichier code-behind.Accès aux commandes ASP dans un datalist

<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> 

Répondre

0

Cela dépend. Par exemple, si vous vouliez changer l'en-tête à l'exécution, dans l'un des événements de liaison d'objet, faites quelque chose comme pour cet en-tête datalist, faites un findcontrol sur le lien hypertexte et faites cette référence ...

+0

Pourriez-vous me donner un exemple de code court? J'ai essayé de trouver le contrôle mais j'ai obtenu que la référence d'objet de la plainte ne soit pas définie sur l'instance de l'objet. Heres le code que j'ai utilisé après la liaison de l'ensemble de données. Dim imgbtnTitle Comme ImageButton = FindControl ("imgbtnTitle") Si imgbtnTitle.ImageUrl = "/_images/hover-down.gif" Alors imgbtnTitle.ImageUrl = "/_images/hover.gif" ElseIf imgbtnTitle.ImageUrl = " /_images/hover.gif "Alors imgbtnTitle.ImageUrl =" /_images/hover-down.gif " Fin Si – contactmatt

+0

On dirait que Jason l'a couvert. J'ajouterais seulement que vous pourriez avoir besoin de lancer le contrôle en utilisant CType. Jetez un oeil à: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx – Steve

1

Généralement, vous devez appeler FindControl sur l'objet DataListItem, afin de trouver le contrôle sur la ligne spécifique. Dans votre exemple, FindControl ne fonctionne que sur une ligne d'en-tête, comme dans l'exemple suivant:

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 
1

même que vous pouvez faire avec des étiquettes et des hyperliens

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"; 
     } 
    } 
0

Oui, vous pouvez accéder aux commandes asp intérieur le datalist en utilisant le Datalist Item Données liées

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"); 
    } 

} 
Questions connexes