2011-06-22 18 views
5

Tengo dos instancias de control de usuario en una página. Ambos tienen campos y un botón de enviar.Número de grupo de validación de control de usuario

He establecido grupos de validación en los campos y validadores, pero por alguna razón al validar los validadores de los dos validadores de los controles de usuario se activan.

+0

¿Podría mostrarnos su código? – Teletha

Respuesta

3

Puede exponer una propiedad ValidationGroup en su UserControl que establecería desde la Página. Este valor debe almacenarse en ViewState, para que cada instancia de UserControl obtenga diferentes ValidationGroups (si su página asigna diferentes).

Por ejemplo:

Public Property ValidationGroup() As String 
Get 
    Return CStr(ViewState("ValidationGroup")) 
End Get 
Set(ByVal value As String) 
    SetValidationGroupOnChildren(Me, value) 
    ViewState("ValidationGroup") = value 
End Set 
End Property 

Private Sub SetValidationGroupOnChildren(ByVal parent As Control, ByVal validationGroup As String) 
    For Each ctrl As Control In parent.Controls 
     If TypeOf ctrl Is BaseValidator Then 
      CType(ctrl, BaseValidator).ValidationGroup = validationGroup 
     ElseIf TypeOf ctrl Is IButtonControl Then 
      CType(ctrl, IButtonControl).ValidationGroup = validationGroup 
     ElseIf ctrl.HasControls() And ctrl.Visible = True Then 
      SetValidationGroupOnChildren(ctrl, validationGroup) 
     End If 
    Next 
End Sub 

Si necesita diferentes ValidationGroups en su UserControl la función recursiva anterior no funciona, entonces se podría asignar manualmente de codebehind. Por ejemplo, colocando la ID de UserControl (podría ser suficiente) o ClientID frente a las propiedades ValidationGroup de los controles correspondientes. Un buen lugar donde podría llamar a esta función sería PreRender.

+0

¡Eres el hombre! – Burt

7

Este método también funciona:

Dim valGroup = String.format("{0}-validation", Guid.NewGuid()) 

rfv001.ValidationGroup = valGroup 
rfv002.ValidationGroup = valGroup 
rfv003.ValidationGroup = valGroup 
rfv004.ValidationGroup = valGroup 
rfv005.ValidationGroup = valGroup 

btnSubmit.ValidationGroup = valGroup 

Sólo es necesario establecer los valores para la ValidationGroup manualmente.

+0

Prefiero esta solución. Gracias – kaiyaq

Cuestiones relacionadas