2010-10-12 7 views
1

J'ai un répéteur avec les boutons Remove (LinkButton). Les appels de base de données coûteux déterminent si une ligne peut être enlevée (bizarre et pas idéal, je sais). Dans chaque ligne, j'ai un CustomValidator qui a un gestionnaire d'événement OnServerValidate.Dans un répéteur, comment déterminer le RepeaterItem du bouton cliqué lors d'un événement CustomValidator OnServerValidate?

Le problème est que je ne sais pas quel RepeaterItem l'utilisateur tente de supprimer au cours de l'événement Multiple Calls to CustomValidator.OnServerValidate(). Si j'avais cette information, je pourrais filtrer la validation à la ligne exacte que l'utilisateur essaye de supprimer.

Pour l'instant, je me suis désabonné de CustomValidator.OnServerValidate et je l'ai piraté ensemble afin que Repeater.OnItemCommand rassemble RepeaterItem et le passe dans une méthode de validation qui définit CustomValidator.IsValid après la validation de la base de données. Cela fonctionne, mais semble boiteux. Il doit y avoir un moyen de conserver mon code de validation dans mon validateur.

Merci d'avance pour toute aide.

Répondre

1

Vous pouvez obtenir le RepeaterItem en utilisant la propriété NamingContainer du bouton.

RepeaterItem item = (RepeaterItem)button.NamingContainer; 
+0

Dans le contexte de CustomValidator.OnServerValidate(), « bouton » est pas disponible si elle est imbriquée dans les éléments de répéteur. Essayez-le. –

+0

Pourquoi ne pouvez-vous pas simplement gérer l'événement click button et l'obtenir à partir de là? –

+0

Voir le message original. C'est ce que je suis en train de faire. Cela fonctionne, mais il suce que le formulaire "passé la validation" déjà. Semble incorrect. travail! = correct –

Questions connexes