1

範囲バリデーターを作成しましたが、送信ボタンがクリックされたときにそれをトリガーしたいと考えています。

RangeValidator rv_tbAbsenceDay = new RangeValidator();
rv_tbAbsenceDay.ID = "rv_tbAbsenceDay" + tbAbsenceDay.ID;
rv_tbAbsenceDay.ControlToValidate = tbAbsenceDay.ID;
rv_tbAbsenceDay.EnableClientScript = true;
rv_tbAbsenceDay.Display = ValidatorDisplay.Dynamic;
rv_tbAbsenceDay.MinimumValue = DateTime.Now.AddMonths(-6).ToString("d");
rv_tbAbsenceDay.MaximumValue = DateTime.Now.ToString("d");
rv_tbAbsenceDay.ErrorMessage = "Date cannot be older than 6 months and not in the future.";
rv_tbAbsenceDay.SetFocusOnError = true;
plcMyStaff.Controls.Add(rv_tbAbsenceDay);

plcMyStaff はプレースホルダーです。

<asp:PlaceHolder ID="plcMyStaff" runat="server"></asp:PlaceHolder>

作成された範囲バリデーターを取得してトリガーするにはどうすればよいrv.validate();ですか?

私はこれを試しました:

protected void MarkAsSick_Command(Object sender, CommandEventArgs e)
{
    DropDownList tempddlReason = (DropDownList)plcMyStaff.FindControl("ddlReason" + e.CommandArgument.ToString());
    TextBox temptbAbsenceDay = (TextBox)plcMyStaff.FindControl("tbAbsenceDay" + e.CommandArgument.ToString());
    TextBox temptbLastDayWorked = (TextBox)plcMyStaff.FindControl("tbLastDayWorked" + e.CommandArgument.ToString());
    RangeValidator temprv_tbAbsenceDay = (RangeValidator)plcMyStaff.FindControl("rv_tbAbsenceDay" + e.CommandArgument.ToString());
    temprv_tbAbsenceDay.validate();
...

あなたが私を助けてくれることを願っています。

ありがとう、

アンディ

4

1 に答える 1

0

最初にこれをデバッグするためにplcMyStaff、コントロールを追加するオブジェクトを調べて、アクセスしたいコントロールが実際に含まれているかどうかを確認することをお勧めします。

PageWebフォームが継承するオブジェクトから取得できるはずです。

Page.FindControl();

// Or you can Iterate through each control to see what the control is called and test for the name you want
foreach (var control in Page.Controls)
{

}
于 2013-08-12T10:15:13.190 に答える