asp.net usercontrol SetFocusOnError - PullRequest
0 голосов
/ 22 июля 2010

У меня есть aspx-страница, на которой несколько одинаковых пользовательских контролов. Пользовательский контроль содержит текстовое поле с валидатором обязательного поля. Валидатор работает, но setonfocus = "true", похоже, не работает, более того, кнопка aspx page, когда валидатор показывает сообщение об ошибке, кнопка все еще запускает код позади.

Вот как выглядит страница aspx для пользовательского элемента управления и кнопки.

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

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

и валидатор usercontrol

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

пользовательский элемент управления был подключен для получения валидатора со страницы aspx и использования его в пользовательском контроле ... что-то вроде этого

 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

и я загружаю AssignValidation на page_load

в любом случае .. надеюсь, это информация, которая вам нужна, чтобы указать мне правильное направление.

Что я хочу сделать, так это если требуется валидатор поля, чтобы поместить фокус на usercontrol, если в текстовом поле usercontrol ничего нет, а также чтобы кнопка на странице aspx не запускалась ... как я думаю, это так ведет себя, если вы используете валидатор на странице aspx без usercontrol

спасибо Shannon

1 Ответ

0 голосов
/ 22 июля 2010

Нельзя установить пользовательский элемент управления видимым, поскольку это не видимый контейнер. Вы можете установить фокус самостоятельно. Смотрите это:

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

Или вы можете программно установить валидатор на идентификатор текстового поля в пользовательском элементе управления; предоставьте свойство textboxID в коде контроля пользовательского элемента управления, который возвращает идентификатор текстового поля, и пусть ваша страница назначит для него controltovalidateID средства проверки.

...