2009-12-18 6 views
2

Ok, voici mon problème:Button .net a tiré une seule fois

J'ai une forme qui oblige à avoir deux fieldsets qui sont presque identiques, mais qui recueillent différents ensembles de données. Ceux-ci sont contenus dans un UpdatePanel. L'utilisateur entre les données dans un formulaire, et quand ils cliquent sur le bouton "Ajouter" , cette ligne est insérée dans DataTable. L'utilisateur devrait pouvoir entrer autant de lignes qu'il le souhaite. Comme ils sont presque identiques, j'ai d'abord obtenu un qui fonctionne correctement, puis je l'ai utilisé comme base pour le second.

Le problème est que maintenant le bouton "Ajouter" n'est déclenché qu'une seule fois. Quand j'essaie de frapper à nouveau, rien ne se passe. Aucune publication ne se produit.

J'ai fait quelques Reasearch, et ils ont conseillé de faire enregistrer les boutons au gestionnaire de script ASP.Net button click event not firing

Cela n'a pas résolu le problème.

Des idées de quoi d'autre je peux essayer?

Edit 3: Solution: Le problème était asp: RegularExpressionValidator avec EnabledClientScript = "true". Il semble que le javascript du contrôle pour valider entre en collision et casse le javascript de asp: Button lorsque le contrôle est rendu. Si j'ai désactivé le ClientScript, les boutons fonctionnent.

La suggestion de regarder dans le cycle de vie me conduit à la bonne réponse. Le problème était qu'il n'y avait pas de cycle de vie sur le code derrière. Donc, après avoir examiné ce que les boutons rendent, cela signifiait qu'il devait s'agir d'un problème lié à javascript.

Édition 2: J'ai désactivé les contrôles de validation: et cela fonctionne. Un aperçu de cela?

Edit 1:

Voici un code correspondant à la question

le balisage bouton:

<td > 
      <asp:Button ID="btnPrNew" Text="Add" OnClick="btnPrNew_Click" runat="server" /> 
</td> 

Et ceci est fonction que traité l'événement onclick

protected void btnPrNew_Click(object sender, EventArgs e) 
{ 
    if (prQuantityValidator.IsValid && prPriceValidator.IsValid) 
    { 
     permanentRepairs = newItemizedDT(); 
     permanentRepairsTotal = populateDT(gvEstimatePermanentRepairs, permanentRepairs) + addNewPrRow(); ; 

     updateSubtotal(totalPermanentRepairs, permanentRepairsTotal); 

     bindData(permanentRepairs, gvEstimatePermanentRepairs); 
     clearPrForm(); 
    } 
    else 
    { 
     erErrorMessage.Text = "Please enter only number amounts in Quantity and Unit Price field."; 
    } 
} 
+2

pouvez-vous poster du code afin que nous puissions voir ce que vous faites? – Chuck

+0

Bien sûr. Donnez-moi un momemnt –

+0

Faites-moi savoir si vous avez besoin de plus de code que celui-ci. –

Répondre

0

Que se passe-t-il dans les événements de votre cycle de vie de page (par exemple, Page_Init, PageLoad, Page _PreRender)?

Est-ce que vous manipulez des choses sur chaque publication (vérifiez-vous Page.IsPostBack) que vous ne devriez gérer que sur le premier chargement de la page?

+0

Tout se passe sur Page_Load. Je ne vérifie pas Page.IsPostBack. –

+0

Merci! Votre question m'a amené à chercher au bon endroit :) –

Questions connexes