Проверка поля в управлении повторителем

У меня вопрос, связанный с 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 =


person user1165864    schedule 28.02.2012    source источник
comment
Итак, я заставил это работать, может быть, это неуклюжий способ сделать это, но я не могу опубликовать для проверки. Я должен ждать 8 часов. Сделаю репост, когда мне разрешат.   -  person user1165864    schedule 28.02.2012


Ответы (1)


Так я понял ответ. Извините за вопрос. Не знаю, почему я не подумал об этом раньше. Я нашел контейнер именования моего пользовательского 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
person user1165864    schedule 29.02.2012