2010-07-22 21 views
0

J'ai une page ASPX que plusieurs des mêmes contrôles sur la page. La commande usercontrol contient une zone de texte avec un validateur de champ Required. Le validateur fonctionne mais le setonfocus = "true" ne semble pas fonctionner, de plus, le bouton de la page aspx lorsque le validateur affiche le message d'erreur, le bouton tire toujours le code derrière.asp.net usercontrol SetFocusOnError

Voici à quoi ressemble la page ASPX en ce qui concerne le contrôle utilisateur et le bouton.

ucTB:ucTextBox ID="ucTextR" runat="server" ValidationGroup="txtRequired" Required="_true" 

asp:Button ID="btnSave" runat="server" Text="Click" ValidationGroup="txtRequired" 

et usercontrol validateur

asp:RequiredFieldValidator ID="rfTextBox" runat="server" ControlToValidate="txtTextBox" 
SetFocusOnError="true" ErrorMessage="Required Field" EnableClientScript="false" 

le contrôle de l'utilisateur a été câblé pour saisir le validateur de la page ASPX et de l'utiliser dans le usercontrol ... quelque chose comme ça

Public Property ValidationGroup() As String 
    Get 
     Return CType(ViewState("ValidationGroup"), String) 
    End Get 
    Set(ByVal Value As String) 
     ViewState("ValidationGroup") = Value 
    End Set 
End Property 

Protected Sub AssignValidation() 
    For Each control As Control In Me.Controls 
     Dim [property] As PropertyInfo = control.[GetType]().GetProperty("ValidationGroup") 
     If [property] Is Nothing Then 
      Continue For 
     End If 
     [property].SetValue(control, ValidationGroup, Nothing) 
    Next 
End Sub 

et je charge le AssignValidation sur page_load

de toute façon .. espérons que c'est l'info que vous n Je dois me diriger dans la bonne direction. Ce que je cherche à faire est si le validateur de champ requis pour mettre l'accent sur le usercontrol s'il n'y a rien dans la zone de texte usercontrol et aussi pour le bouton sur la page aspx de ne pas déclencher .. comme je pense il se comporte si vous utilisez un validateur sur une page ASPX sans usercontrol

grâce shannon

Répondre

0

vous ne pouvez pas définir le contrôle utilisateur visible car il est pas un conteneur visible. Vous pouvez définir vous-même le focus par programme. Voir ceci:

http://forums.digitalpoint.com/showthread.php?t=282224

Ou, vous pouvez régler le validateur programmable à l'ID de la zone de texte dans le contrôle de l'utilisateur; exposer une propriété textboxID dans le code de contrôle utilisateur derrière lequel renvoie l'ID de la zone de texte, et demander à votre page d'assigner le controltovalidateID du validateur à ceci.

+0

merci pour la réponse .. je ne cherche pas à définir le contrôle de l'utilisateur à visable. Ce que j'espérais faire, c'est que le bouton sur le formulaire ne déclencherait pas son événement si la validation voyait une erreur. C'est comme ça que ça fonctionne quand un contrôle d'utilisateur n'est pas dans l'image. Mais avec la commande usercontrol, la validation se déclenche mais si la validation échoue, l'événement button se déclenche également. Je voudrais qu'il ne le fasse pas, car il ne le fait pas lorsque la validation échoue sur un événement non contrôlé. – jvcoach23