2010-10-11 10 views
0

dans ce .ASPX travailleDéclaration d'un événement CLICK. ASPX vs Code derrière .. comment sont ces 2 différents?

<asp:ImageButton ID="lbHope6" runat="server" ImageUrl="~/Shared/Images/Site/ChartTypeProd.png" 
CssClass="chart" OnClick="lbHope6_Click" /> 

protected void lbHope6_Click(object sender, ImageClickEventArgs e) 
    { 
     EventArgs args = new EventArgs(); 

     if (Hope6 != null) 
      Hope6(this, args); 
    } 

mais quand je le fais de cette façon, il agit différemment .. toutes les idées ?? ive tout espoir

LinkButton lb = new LinkButton(); 
       lb.Text = s.Key.ToString(); 
       lb.Click += new EventHandler(lbHope6_Click); 
       sourceNameCell.Controls.Add(lb); 

    protected void lbHope6_Click(object sender, EventArgs e) 
    { 
     EventArgs args = new EventArgs(); 

     if (Hope6 != null) 
      Hope6(this, args); 
    } 
+2

Dans quel cas créez-vous le 'LinkButton'? –

+0

@Dustin Laine a raison - 'where' vous créez le LinkButton (et surtout le câblage de l'événement) est primordial. Dans ASP.NET (sites Web) "old-school", des choses comme les gestionnaires Page_Load et Event étaient automatiquement câblées dans la méthode InitializeComponent (appelée par Page_Init je crois). – RPM1984

+0

Comment la création de cet événement de clic dans la page init par rapport au chargement de la page affecte-t-elle les choses? ... En ce moment tout se passe dans une fonction dans le page_load .. il doit arriver là je pense que c'est là que le code HTML est construit – punkouter

Répondre

1

Vous créez le nouveau bouton de lien et d'attribuer une eventhandler chaque fois que la page se charge (y compris lors de la publication). .Net ne comprendra pas que le LinkButton que vous créez lors de la publication est en fait le LinkButton que vous avez créé lors de l'appel initial de la page. Votre premier échantillon de code était correct.

+0

il est difficile d'expliquer le reste du code aroudn .. mais fondamentalement la façon dont il est Maintenant, j'ai besoin de cliquer deux fois sur le bouton de lien pour faire ce qu'il est supposé .. – punkouter

+0

Alors, quelle est la bonne façon de créer l'événement par programmation? Je dois le faire sur le chargement de la page je pense parce que le lien est fait dans le cadre d'une table HTML qui est créée progarmmtiquement .... Donc je ne veux pas créer quelque chose en dehors de cette boucle car le code qui détermine si cet événement lien/clic est créé ... cela a du sens? Seul un autre travail autour je pourrais le comprendre pour avoir juste une table séparée contenant les liens et je pourrais rendre cette table séparée déclarative afin que je puisse utiliser ma première technique – punkouter

+0

Tout dépend de la façon dont votre code HTML est généré. il est possible que vous le preniez à la dure. Peut-être que votre solution est de définir un DataBound ListView et d'utiliser votre première méthode pour gérer les clics. L'astuce pour déclencher l'événement consiste à construire le contrôle sur la publication exactement comme avant la publication dans l'événement CreateChildControls ou DataBinding. – Jeroen