Я пытаюсь включить обязательный валидатор поля для текстового поля, если выбранное значение раскрывающегося списка = 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: </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 "Non Performance"" ForeColor="Maroon"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
</ItemTemplate>
</DataList>