无法动态地将controlvalidation添加到文本框

时间:2014-08-26 09:42:14

标签: asp.net

在互联网上进行了几次搜索后,最终决定放弃一个问题。 在运行时,我希望发生以下情况。 如果按下按钮,文本框将添加到控件中,并且必须将自定义验证程序附加到文本框并触发。 它不会开火。为什么? 这是我的代码 感谢您对此进行调查。

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    CustomValidator rv2 = new CustomValidator();

    protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            rv2.ID = "rev2";
            rv2.ErrorMessage = "Not numeric input";
            rv2.ClientValidationFunction = "";
            rv2.ServerValidate += new ServerValidateEventHandler(GetalValidator);
            Controls.Add(rv2);
        }
    }
    protected void ButtonClick(object sender, EventArgs args)
    {
        TextBox tb1 = new TextBox();
        tb1.ID = "tb2";
        tb1.Visible = true;
        tb1.Width = 30;
        this.Controls.Add(tb1);`enter code here`
        rv2.EnableClientScript = false;
        rv2.ControlToValidate = "tb2";
    }
    private bool IsNumber(string someText)
    {
        int number;
        bool result = Int32.TryParse(someText, out number);
        return result;
    }
    protected void GetalValidator(object source, ServerValidateEventArgs args)
    {
        args.IsValid = IsNumber(args.Value);
    }
}

1 个答案:

答案 0 :(得分:0)

这是代码的一部分,您可以通过该代码在动态创建的控件上添加验证。

    TextBox tb1 = new TextBox();
    tb1.ID = "tb2";
    tb1.Visible = true;
    tb1.Width = 30;

    RequiredFieldValidator regfv = new RequiredFieldValidator();
    regfv.ID = "regfv";
    regfv.ControlToValidate = tb1.ID;
    regfv.ErrorMessage = "My Error";

   this.Controls.Add(tb1);
   this.Controls.Add(regfv);