Проверка поля в контроле повторителя - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть вопрос, связанный с asp.net и vb.net.У меня есть элемент управления повторителем, к которому я привязываю некоторые данные и позволяю пользователям обновлять / изменять поля в определенных текстовых полях.Я добавил элемент управления для проверки, когда пользователь не вводит правильную дату или текст «TBD».При отправке я хочу пройти и выделить каждое поле, в котором соответствующий валидатор недействителен.Это мой текущий код, но я заблудился о том, как найти элемент управления текстового поля.

Sub ValidateDateField(ByVal sender As Object, _
                      ByVal args As ServerValidateEventArgs)
    'validate against three conditions - date, "TBD", and "N/A"
    Dim dtValue = args.Value
    If dtValue.ToUpper = "TBD" Or dtValue.ToUpper = "N/A" Then
        args.IsValid = True
    ElseIf IsDate(dtValue) Then
        args.IsValid = True
    Else
        args.IsValid = False

        Dim cont As WebControl = DirectCast(Page.FindControl(args.ToString), WebControl)

        cont.BackColor = Drawing.Color.White

        util.Client_Alert("Please Update Highlighted Fields")

    End If
End Sub

Я совершенно заблудился о том, как получить cont = textbox1row1 моего элемента управления повторителя.Пожалуйста, порекомендуйте.Все примеры, которые я видел до сих пор, прямо указывают на элемент управления, как в text1.BackColor =

1 Ответ

0 голосов
/ 01 марта 2012

Итак, я разобрался с ответом. Извините за вопрос. Не знаю, почему я не подумал об этом раньше. Я нашел контейнер именования моего собственного val и затем нашел элемент управления на основе его имени в повторителе. в vb.net это было примерно так:

Sub ValidateDateField(ByVal sender As Object, _
                      ByVal args As ServerValidateEventArgs)

    'args holds value. validate against three conditions - date, "TBD", and "N/A"
    Dim dtValue = args.Value

    Dim cont As CustomValidator = sender
    Dim myNC As Control = cont.NamingContainer    
    Dim strControl As String

    strControl = cont.ControlToValidate

    Dim txtbox As TextBox = _
      DirectCast(myNC.FindControl(cont.ControlToValidate), TextBox)

    If dtValue.ToUpper = "TBD" Or dtValue.ToUpper = "N/A" Or IsDate(dtValue) Then
        args.IsValid = True
        txtbox.BackColor = Drawing.Color.Empty
    Else
        args.IsValid = False

        txtbox.BackColor = Drawing.Color.White

    End If

End Sub
...