Użytkownik może wystawić właściwość ValidationGroup
w ustawieniach UserControl, którą można ustawić na stronie. Ta wartość powinna być przechowywana w ViewState, aby każda instancja UserControl otrzymywała różne ValidationGroups (jeśli twoja strona przypisuje różne).
Na przykład:
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
Jeśli potrzebujesz różnych ValidationGroups w UserControl powyższa funkcja rekurencyjna nie zadziała, to można go przypisać ręcznie od codebehind. Na przykład umieszczając identyfikator UserControl (może być wystarczający) lub identyfikator klienta przed właściwościami ValidationGroup odpowiednich kontrolek. Dobrym miejscem, w którym można by nazwać tę funkcję, byłby PreRender
.
Czy możesz pokazać nam swój kod? – Teletha