2009-01-09 9 views
2

J'ai un contrôle datalist qui contient certaines commandes (ex: bouton). Je veux écrire du code dans l'événement click du bouton qui est dans le contrôle datalist. Mais dans le code derrière la page je ne peux pas voir le nom des contrôles dans Datalist. Comment puis-je résoudre ce problème?Utilisation de l'événement de contrôle sous datalist

Répondre

2

Si vous ne voulez pas ajouter un gestionnaire à tous les événements de l'enfant, vous pouvez ajouter votre code à la place à la OnItemCommand.

<asp:DataList id="DataList1" runat="server"> 
<ItemTemplate> 
<asp:Button ID="btnDoSomething" Runat=server CommandName="DoSomething" 
CommandArgument="<%# DataBinder.Eval(Container.DataItem, "SomeID") 
%>"></asp:LinkButton> 
</ItemTemplate> 
</asp:DataList> 

protected void DataList1_ItemCommand(
object source, DataListCommandEventArgs e) 

{ 

    if (e.CommandName == "DoSomething") 

    { 

    //Do stuff 

    } 

} 
+0

C'est ce que je veux. Merci – mavera

3

Attachez votre événement aux contrôles de l'événement OnItemCreated du datalist.

RÉVISÉ POUR AJOUTER EXEMPLE

private void DataList_ItemCreated(object sender, 
    System.Web.UI.WebControls.DataListItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      Button btn = (Button)e.Item.FindControl("btnWhatever"); 
      if (btn != null) btn.Click += new EventHandler(SomHandler); 
     } 
    } 
+0

Pouvez-vous simplifier les choses? un exemple de code peut aider. – mavera

+0

Bien sûr, chose. Vérifiez le montage et faites-moi savoir si c'est clair. – cmsjr

+0

Merci! C'est assez clair;) – mavera