2015-06-28 2 views
1

У меня есть таблица с около 30 текстовыми полями. Каждая строка имеет 2 текстовых поля, которые имеют один и тот же префикс, но различаются суффиксом, например txtAvgFrom и txtAvgTo. мне нужно перебрать таблицы и выполнить пользовательскую проверку на текстовые поля:Пользовательская проверка в текстовых полях

  1. только целые числа
  2. если оба и из текстовых полей заполняются в я должен проверить, что значение из текстового поля меньше, чем от значения.
  3. диапазон введен в каждом текстовом поле является 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> 
+0

Вы должны сделать свою домашнюю работу самостоятельно: P –

+0

Это не домашнее задание. Мне действительно нужна помощь, пожалуйста. – collie

ответ

1

Вы можете использовать ASP.NET Validation Controls:

  1. RegularExpressionValidator

  2. CustomValidator (проверить в code behind)

  3. RangeValidator

    <asp:CustomValidator ID="CustomValidator1" runat="server" 
        ErrorMessage="if both to and from textboxes are filled in I have to check that the value in from textbox is smaller than the from value" > 
    </asp:CustomValidator> 
    
    <table> 
        <tr> 
         <td>From price</td> 
         <td> 
          <asp:TextBox runat="server" ID="txtPriceFrom"></asp:TextBox> 
    
          <asp:RegularExpressionValidator runat="server" 
           ControlToValidate="txtPriceFrom" 
           ErrorMessage="Please Enter Only Numbers" 
           ForeColor="Red" 
           ValidationExpression="^\d+$"> 
          </asp:RegularExpressionValidator> 
    
          <asp:RangeValidator runat="server" 
           ControlToValidate="txtPriceFrom" 
           ErrorMessage="Range entered in each textbox is 1-100" 
           MaximumValue="100" MinimumValue="1"> 
          </asp:RangeValidator> 
         </td> 
         <td>To price</td> 
         <td> 
          <asp:TextBox runat="server" ID="txtPriceTo"></asp:TextBox> 
          ... 
         </td> 
         <td>From yield</td> 
         <td> 
          <asp:TextBox runat="server" ID="txtYieldFrom"></asp:TextBox> 
          ... 
         </td> 
         <td>To yield</td> 
         <td> 
          <asp:TextBox runat="server" ID="txtYieldTo"></asp:TextBox> 
          ... 
         </td> 
        </tr> 
    </table> 
    
Смежные вопросы