У меня есть таблица с около 30 текстовыми полями. Каждая строка имеет 2 текстовых поля, которые имеют один и тот же префикс, но различаются суффиксом, например txtAvg
From
и txtAvg
To
. мне нужно перебрать таблицы и выполнить пользовательскую проверку на текстовые поля:Пользовательская проверка в текстовых полях
- только целые числа
- если оба и из текстовых полей заполняются в я должен проверить, что значение из текстового поля меньше, чем от значения.
- диапазон введен в каждом текстовом поле является 1-100
я, возможно, потребуется больше валидаций позже. Кроме того, если текстовое поле заполнено, то из него не требуется и наоборот. Текстовое поле не требуется.
Мне нужно выполнить проверку на стороне сервера. Должен ли я добавить специальный контроль проверки? Если да, то для каждого текстового поля? Установить controltovalidate
? Мне нужно отобразить правильную ошибку рядом с каждой строкой при нажатии кнопки отправки. И, очевидно, если страница недействительна, то ничего не делайте дальше.
Я не хочу добавлять различные проверки. Только пользовательский валидатор. Мне также нужно сделать это динамически, и когда пользователь нажимает кнопку отправки, я хочу, чтобы проверка произошла, и покажите (*) рядом с строкой с ошибкой и покажите полное сообщение об ошибке в сводке проверки.
Я попытался добавить элемент управления, но он не срабатывает при нажатии кнопки.
Private Sub AddCustomValidation(ByVal container As Control)
Dim custom As CustomValidator
Dim vldtxt As TextBox
For Each ctrl In container.Controls
If TypeOf ctrl Is TextBox Then
vldtxt = CType(ctrl, TextBox)
custom = New CustomValidator
custom.Text = "To field must be bigger than from field"
custom.ControlToValidate = vldtxt.ID
AddHandler custom.ServerValidate, AddressOf CustomValidation
' custom.ServerValidate += New System.Web.UI.WebControls.ServerValidateEventHandler(customvalidation)
Me.form1.Controls.Add(custom)
Else
AddCustomValidation(ctrl)
End If
Next
End Sub
Protected Sub CustomValidation(ByVal source As System.Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
Dim vldtxt As TextBox
Dim othertxt As TextBox
Dim othertxtid As String
Dim txtid As String
Dim lower As String
Dim higher As String
For Each ctrl As Control In tbl1.Controls
vldtxt = TryCast(ctrl, TextBox)
othertxt = TryCast(ctrl, TextBox)
If vldtxt IsNot Nothing Then
txtid = ctrl.ID
''check if to is not empty and if not empty then check that that to value is higher
''than from value
If ((txtid.ToLower.EndsWith("to")) And (vldtxt.Text <> "")) Then
higher = (vldtxt.Text)
othertxtid = vldtxt.ID.Replace("To", "From")
othertxt = Page.FindControl(othertxtid)
othertxt.ID = othertxtid
lower = (othertxt.Text)
If lower = String.Empty Or higher = String.Empty Then
args.IsValid = True
End If
If Int32.Parse(lower) >= Int32.Parse(higher) Then
args.IsValid = False
End If
Else
args.IsValid = True
End If
End If
Next
End Sub
Раскладка что-то вроде этого:
<table id="tbl1" runat="server" cellpadding="0" cellspacing="3">
<tr>
<td>From price</td>
<td>
<asp:TextBox runat="server" ID="txtPriceFrom">
</td>
<td>To price</td>
<td>
<asp:TextBox runat="server" ID="txtPriceTo">
</td>
<td>From yield</td>
<td>
<asp:TextBox runat="server" ID="txtYieldFrom">
</td>
<td>To yield</td>
<td>
<asp:TextBox runat="server" ID="txtYieldTo">
</td>
</tr>
</table>
Вы должны сделать свою домашнюю работу самостоятельно: P –
Это не домашнее задание. Мне действительно нужна помощь, пожалуйста. – collie