2009-09-20 8 views
0

Sur une page web j'ai un répéteur que je veux attribuer un modèle à lui:répéteur modèle d'objet chargement

repeater1.ItemTemplate = Page.LoadTemplate("Template.ascx"); 

Sur ce modèle, j'ai des boutons. Je dois gérer les événements Click de ces boutons.
Est-ce qu'il est possible de gérer le fichier codebehind de la page web ou dois-je créer un fichier codebehind pour Template.ascx? Parce que si créer un codebehind pour Template.ascx je ne peux pas accéder aux propriétés qui ont été déclarées sur la page Web.

Répondre

0

contrôles liés aux données utilisent une technique appelée event bubbling qui permettent un contrôle enfant de propager des événements dans la hiérarchie de contrôle. Quand on clique sur un bouton, l'événement «gonfle» jusqu'au contrôle du répéteur contenant. Vous pouvez ensuite déterminer quel bouton a déclenché l'événement en vérifiant la propriété CommandName de RepeaterCommandEventArgs, puis effectuez les actions appropriées.

Dans le contrôle utilisateur.

<asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" /> 
<asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Delete" /> 

Dans votre page parent, gérez l'événement ItemCommand du contrôle de répéteur.

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    switch (e.CommandName) 
    { 
     case "Update": 
      //Add update logic here... 
      break; 
     case "Delete": 
      //Add delete logic here.. 
      break; 
    } 
} 
0

Vous pouvez accéder aux propriétés dès que vous avez accès au contrôle souhaité. Pour ce faire, vous devez rechercher le bouton dans RepeaterItem votre commande de répéteur. La propriété First Controls est le conteneur de l'élément et la seconde est votre contenu, ce qui signifie que dans votre cas, c'est le contrôle de votre bouton.

Soyez averti, si votre modèle de contrôle n'a aucune action sur votre page souhaitée, à des fins de liaison de données peut-être, vous devriez l'autoriser sous le code côté de votre page de modèle.

Bonne chance

+0

Je fais cela sur ma page web (pas dans Template.ascx.cs)? – dani

+0

Oui, vous le ferez à l'endroit où vous avez placé le contrôle de votre répéteur, pas dans Template.ascx – Myra

Questions connexes