【问题标题】:ASP.net How can I invalidate in textchanged eventASP.net 如何在 textchanged 事件中无效
【发布时间】:2014-01-23 12:53:32
【问题描述】:

如何在 textchanged 事件中使页面无效。

我有一个带有文本框和提交按钮的简单表单 如果输入的文本无效,我想禁用按钮或停止提交。 有效性将在 textchanged 事件中检查,因为我有一些数据库操作来检查内容的有效性。 如果我能以某种方式使 textchanged 事件中的页面无效,那么它可能会更容易 请给我一些简单的方法来实现这个 谢谢 购物车

【问题讨论】:

  • 为什么? TextChanged 事件仅在回发到服务器时触发(例如,当用户按下按钮时)。验证器的全部意义在于,在字段有效之前,您不会回发到服务器(假设启用了客户端验证)。我假设您正在使用验证器控件。
  • 我同意你。但我需要解决我的问题。有或没有回发。 txtbox 内容必须用 DB 进行检查

标签: c# asp.net validation customvalidator


【解决方案1】:

我能够完美地解决我自己的问题。我使用了 customvalidator OnServerValidate 事件

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.onservervalidate(v=vs.110).aspx

现在在我的 TextChanged 事件中,如果输入的数据不正确,我会显示一个警告,并且在我的提交按钮的 button_click 事件中,我调用 Page.Validate(),随后调用与文本关联的每个自定义验证器的 OnServerValidate 事件处理程序盒子。

 protected void btnIssueItem_Click(object sender, EventArgs e)
    {
        Page.Validate();
        if (!Page.IsValid)
            return;
....
}


protected void tbRoomID_CustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        BAL bal = new BAL();
        args.IsValid = bal.GetRoomByRoomID(Int32.Parse(args.Value)).Count == 0 ? false : true;
    }

【讨论】:

    【解决方案2】:

    您可以将Button Enabled Property设置为true或false,即:

    <asp:TextBox runat="server" ID="txtData" OnTextChanged="txtData_TextChanged"
                                                AutoPostBack="true"></asp:TextBox>
     <asp:Button runat="server" ID="btnSave" OnClik="btnSave_Click"></asp:Button>
    

    隐藏代码:

          protected void txtData_TextChanged(object sender, EventArgs e)
            {
               if(txtData.Text == "something")
               {
                   btnSave.Enabled = True;
               }
               else
                   btnSave.Enabled = False;
            }
    

    【讨论】:

    • 如果有两个或更多的 txt 框,这将失败。任何 txtbox 都会使按钮启用,用户将有机会收到错误。
    • 如何验证数据?正则表达式或某种字符串比较?
    • 一旦我们进入 txtData_TextChanged,我们可以通过字符串比较或正则表达式或任何其他方式进行检查。重点问题是我需要有一种方法,如果任何 txtbox 中的数据不正确,则页面提交变得不可能。我需要通过一些 DB 操作检查 txtbox 的内容
    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多