Включить RequiredFieldValidator с помощью DropDownList selectedValue в пределах DataList - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь включить обязательный валидатор поля для текстового поля, если выбранное значение раскрывающегося списка = 0. Все это происходит внутри DataList.

Это для нашей интрасети с серверами SQL и IIS с веб-страницами ASP / VB.net. Я включил свой код, но мне не повезло заставить RFV работать. Вот код vb для циклического перебора DataList:

  Dim strID As String
        Dim strComply As String
        Dim dlItem As DataListItem
        Dim strComment1 As String

        For Each dlItem In dlWeek1.Items
            Dim ddlComply1 As DropDownList = CType(dlItem.FindControl("ddlComply1"), DropDownList)
            Dim txtComment1 As TextBox = CType(dlItem.FindControl("txtComment1"), TextBox)
            Dim RequiredFieldValidator1 As RequiredFieldValidator = CType(dlItem.FindControl("RequiredFieldValidator1"), RequiredFieldValidator)
            Dim strLanID As String = lblLanID.Text
            Dim strTimestamp As Date = Now()

            strComply = ddlComply1.SelectedItem.Value
            strComment1 = txtComment1.Text
            strID = dlWeek1.DataKeys(dlItem.ItemIndex).ToString()

            If strComply = 0 Then
                RequiredFieldValidator1.Enabled = True
            Else
                RequiredFieldValidator1.Enabled = False
            End If

            With myCmd.Parameters
                .Add(New SqlParameter("@Comply", strComply))
                .Add(New SqlParameter("@comment", strComment1))
                .Add(New SqlParameter("@LanID", strLanID))
                .Add(New SqlParameter("@Timestamp", strTimestamp))
                .Add(New SqlParameter("@ID", strID))
            End With

            myCmd.ExecuteNonQuery()
            myCmd.Parameters.Clear()
        Next dlItem

А вот соответствующий код aspx:

  <asp:DataList runat="server" ID="dlWeek1" DataKeyField="wklyCompID">
                <ItemTemplate>
                    <table>
                    <tr>
                        <td>
                            <b>Contract: &nbsp;</b>
                        </td>
                        <td>
                            <%# DataBinder.Eval(Container.DataItem, "contractNumber") %>
                        </td>
                        <td>
                            <b>Compliance:</b>
                        </td>
                        <td>
                            <asp:Label ID="lblComply1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "ComplianceDescription")%>' />
                        </td>
                        <td>
                            <asp:DropDownList runat="server" ID="ddlComply1" AutoPostBack="false">
                                <asp:ListItem Selected="true" Value="7">-- Select --</asp:ListItem>
                                <asp:ListItem Value="1">Verified Performance</asp:ListItem>
                                <asp:ListItem Value="0">Non Performance</asp:ListItem>
                                <asp:ListItem Value="2">Low Stock</asp:ListItem>
                            </asp:DropDownList>
                        </td>
                        <td rowspan="3" valign="top">
                            <asp:TextBox ID="txtComment1" runat="server"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtComment1" Enabled="False" ErrorMessage="* Comments are required for &quot;Non Performance&quot;" ForeColor="Maroon"></asp:RequiredFieldValidator>
                        </td>
                    </tr>
                 </table>
             </ItemTemplate>
 </DataList>
...