リピーターで適切なカスタムサーバー側の検証を行う方法がわかりません。
私は3つの列を持つリピーターコントロールを持っています:1)登録-チェックボックス2)出席-チェックボックス3)時間-テキストボックス
Timeテキストボックスの値を検証するサーバー側のカスタム検証を作成する必要があります。
今のところ、リピーターで次のカスタム検証を作成しました。
<asp:Repeater runat="server" ID="rptResidents" OnItemDataBound="rptResidents_ItemDataBound">
....
<asp:CheckBox runat="server" CssClass="RegisterSpan" name="RegisterChkName" ID="chkRegister" />
<asp:CheckBox runat="server" CssClass="AttendedSpan" name="AttendedChkName" ID="chkAttended" />
<asp:TextBox runat="server" ID="txtTime" Width="30px" MaxLength="3" Columns="3"></asp:TextBox>
<asp:CustomValidator runat="server" Width="1px" ID="valTimeRange" ControlToValidate="txtTime" OnServerValidate="valTimeRange_ServerValidate" Text="*" ErrorMessage="Minutes cannot exceed the minutes of the event" />
....
サーバー側の検証機能:
protected void valTimeRange_ServerValidate(object sender, ServerValidateEventArgs e)
{
int maxAllowedMinutes = 0;
maxAllowedMinutes = Convert.ToInt32(this.txtMaxAllowedMinutes.Text);
int val = Convert.ToInt32(e.Value);
if (val > maxAllowedMinutes)
{
e.IsValid = false;
}
else
{
e.IsValid = true;
}
}
これは正常に機能します。ただし、ロジックを追加する必要があります。チェックボックスも使用する必要があります-カスタムサーバー側の検証に登録して参加します。
したがって、ServerValidate関数は次のようになります。
protected void valTimeRange_ServerValidate(object sender, ServerValidateEventArgs e)
{
if (CHECKBOX_REGISTER_IS_CHECKED && CHECKBOX_ATTENDED_IS_CHECKED) //?????
{
DO_VALIDATION_DESCRIBED_ABOVE
}
else
{
e.IsValid = true; //NO NEED TO VALIDATE TIME HERE OR ANY OTHER LOGIC COULD BE HERE
}
}
したがって、ここでの問題は、サーバー側の検証方法でチェックボックスの値を取得する方法を理解していません(両方のチェックボックスはリピーターからのものです)。