У меня есть форма, которая извлекает необходимый текст соглашения из базы данных и отображает каждое активное условие соглашения в виде отдельного флажка в повторителе. Мне нужно проверить, что ВСЕ флажки в повторителе проверены перед отправкой формы. Есть ли способ сделать это, или я должен пойти по-другому, чем то, что я начал ниже?
В настоящее время у меня есть CustomValidator, но он требует только, чтобы был установлен хотя бы один из флажков.
<h1>Agreements</h1>
<asp:Repeater ID="rptAgreements" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td valign="top" style="padding:10px;">
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="*" ClientValidationFunction = "ValidateCheckBox"></asp:CustomValidator>
<asp:CheckBox ID="Agreements" value='<%# Eval("AgreementID") %>' runat="server" ClientIDMode="Static" />
</td>
<td style="padding:10px;">
<asp:Label ID="lblAgreementText" runat="server" Text='<%# Eval("AgreementText") %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<script type = "text/javascript">
function ValidateCheckBox(sender, args) {
if (document.getElementById("Agreements").checked == true) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
</script>
Код сзади:
try
{
using (SqlConnection con = new SqlConnection(FormConnstring))
{
using (SqlCommand cmd = new SqlCommand("sp_SelectAgreements", con))
{
using (SqlDataAdapter agreeDS = new SqlDataAdapter(cmd))
{
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
agreeDS.Fill(dt);
rptAgreements.DataSource = dt;
rptAgreements.DataBind();
}
}
}
}