Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为按钮单击启用和禁用字段验证程序_C#_Asp.net - Fatal编程技术网

C# 为按钮单击启用和禁用字段验证程序

C# 为按钮单击启用和禁用字段验证程序,c#,asp.net,C#,Asp.net,我有两个按钮控制。我想在单击btnavail\u单击时禁用文本框的字段验证程序。它起作用了。但是,当我单击按钮btnsubmit\u单击时,字段验证程序未启用 protected void btnsubmit_Click(object sender, EventArgs e) { RequiredFieldValidator2.Enabled = true; RequiredFieldValidator3.Enabled = tr

我有两个按钮控制。我想在单击
btnavail\u单击
时禁用文本框的字段验证程序。它起作用了。但是,当我单击按钮
btnsubmit\u单击时,
字段验证程序未启用

 protected void btnsubmit_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator2.Enabled = true;
            RequiredFieldValidator3.Enabled = true;
            RequiredFieldValidator4.Enabled = true;
            con.Open();
            SqlCommand cmd1 = new SqlCommand("Select * from tblstudentinfo where StudentId=@studentid", con);
            cmd1.Parameters.AddWithValue("@studentid",txtstudentid.Text.ToString());
            SqlDataReader rdr=cmd1.ExecuteReader();
            if(rdr.Read())
            {
                int i=Convert.ToInt32(rdr["Password"]);
                int j=Convert.ToInt32(txtpassword.Text);
                if(i == j)
                {
                    SqlCommand cmd2 = new SqlCommand("select * from tblbookinfo where Name=@bookname", con);
                    cmd2.Parameters.AddWithValue("@bookname", txtbookname.Text.ToString());
                    SqlDataReader rdr1 = cmd2.ExecuteReader();
                    if (rdr1.Read())
                    {
                        int s = Convert.ToInt32(rdr1["BookId"]);
                        SqlCommand cmd = new SqlCommand("inserttotbllendinginfo2", con);
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add(new SqlParameter
                        {
                            ParameterName = "@bookid",
                            SqlDbType = SqlDbType.Int,
                            Value = s
                        });
                        cmd.Parameters.Add(new SqlParameter
                        {
                            ParameterName = "@studentid",
                            SqlDbType = SqlDbType.Int,
                            Value = Convert.ToInt32(txtstudentid.Text)
                        });
                        cmd.Parameters.Add(new SqlParameter
                        {
                            ParameterName = "@noofbooks",
                            SqlDbType = SqlDbType.Int,
                            Value = Convert.ToInt32(txtnoofbook.Text)
                        });
                        cmd.Parameters.Add(new SqlParameter
                        {
                            ParameterName = "@dateoflending",
                            SqlDbType = SqlDbType.Date,
                            Value = txtdate.Text
                        });
                        cmd.ExecuteNonQuery();
                    }
                 }
                else
                {
                    lblpassword.Visible=true;
                    lblpassword.Text="Your password is incorrect. Please Check it";
                    lblpassword.ForeColor = System.Drawing.Color.Red;
                }

                con.Close();
              }
        }

        protected void btnavail_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator2.Enabled = false;
            RequiredFieldValidator3.Enabled = false;
            RequiredFieldValidator4.Enabled = false;

            SqlCommand cmd = new SqlCommand("select * from tblbookinfo where Name=@bookname", con);
            cmd.Parameters.AddWithValue("@bookname", txtbookname.Text.ToString());
            con.Open();
            if (String.IsNullOrEmpty(txtbookname.Text))
            {
                lblbookavail.Visible = true;
                lblbookavail.Text = "Please enter a valid book name";
                lblbookavail.ForeColor = System.Drawing.Color.Red;
            }
            else
            {
            SqlDataReader rdr = cmd.ExecuteReader();            
                if (rdr.Read())
                {
                    string s = rdr["Name"].ToString();
                    if (s != null)
                    {
                        int i = Convert.ToInt32(rdr["AvailableBooks"]);
                        lblbookavail.Visible = true;
                        lblbookavail.Text = (i.ToString());
                    }
            }
            }
           con.Close();
            }
我将两个按钮的原因验证属性设置为false。我需要在单击
btnsupmit\u单击
时启用验证器。请有人帮帮我

<table align="center">
            <tr><td>Book Name</td><td><asp:TextBox ID="txtbookname" runat="server"></asp:TextBox></td>
                <td><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Requires book name" ControlToValidate="txtbookname" ForeColor="Red" Text="*"></asp:RequiredFieldValidator></td>
                <td><asp:Button ID="btnavail" runat="server" Text="Book Availability"   OnClick="btnavail_Click" /></td><td><asp:Label ID="lblbookavail" runat="server" Visible="false"></asp:Label></td></tr>
            <tr><td>Student Id</td><td><asp:TextBox ID="txtstudentid" runat="server" ValidationGroup="save"></asp:TextBox></td>
                <td><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Requires Studentid" ControlToValidate="txtstudentid" ForeColor="Red" Text="*"></asp:RequiredFieldValidator></td></tr>
            <tr><td>No of Book</td><td><asp:TextBox ID="txtnoofbook" runat="server" ></asp:TextBox></td>
                <td><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Requires no of book" ControlToValidate="txtnoofbook" ForeColor="Red" Text="*"></asp:RequiredFieldValidator></td></tr>
            <tr><td>Date of lending</td><td><asp:TextBox ID="txtdate" runat="server" ></asp:TextBox></td></tr>
            <tr><td>Password</td><td><asp:TextBox ID="txtpassword" TextMode="Password" runat="server"  ></asp:TextBox></td>
                <td><asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Requires Studentid" ControlToValidate="txtpassword" ForeColor="Red" Text="*"></asp:RequiredFieldValidator></td>
                <td><asp:Label ID="lblpassword" runat="server" Visible="false"></asp:Label></td></tr>
            <tr><td><asp:Button ID="btnsubmit" runat="server" Text="Submit"  OnClick="btnsubmit_Click" /></td></tr>
            </table>

书名
学生证
书号
贷款日期
密码

这是我的HTML代码。我想禁用studentid的字段验证器、图书数量和btnavail_单击上的密码。同样,我需要为btnsubmit\u click启用它们,这是因为,您正在服务器端代码中启用
RequiredFieldValidator
,即在按钮单击事件处理程序上,类似
RequiredFieldValidator
的验证控件在客户端工作。这意味着,当您单击
Submit
buttton时,由于您的验证程序被禁用,它无法工作,并且表单已发布到服务器,现在即使您现在启用验证程序,它也没有用,因为表单已发布

不应启用和禁用验证程序控件,而应将每个按钮控件的属性设置为
true
false
,如下所示:-

<asp:Button ID="SubmitButton" runat="server" Text="Submit" 
            CausesValidation="true" OnClick="SubmitButton_Click" />

为什么不将
ValidationGroup
添加到您的文本框和按钮(btnsubmit)中

<asp:TextBox ID="TextBox1" runat="server" ValidationGroup="save"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1" 
            ValidationGroup="save"></asp:RequiredFieldValidator>
        <asp:TextBox ID="TextBox2" runat="server" ValidationGroup="save"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
            ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox2" 
            ValidationGroup="save"></asp:RequiredFieldValidator>
        <asp:Button ID="btnAvail" runat="server" Text="Button" ValidationGroup="save" 
            onclick="btnAvail_Click" />
        <asp:Button ID="btnsubmit" runat="server" Text="Button" 
            onclick="btnsubmit_Click" />

在这里,我为文本框(我想在其上触发所需的字段验证)和提交按钮提供了一个公共验证组。因此,我的所有验证只会在提交按钮上启动

使用这种方法的好处是,您的所有工作都将在客户端完成,无需为启用和禁用验证而头疼

更新 只需按原样使用此代码

<table align="center">
    <tr>
        <td>
            Book Name
        </td>
        <td>
            <asp:TextBox ID="txtbookname" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Requires book name"
                ControlToValidate="txtbookname" ForeColor="Red" Text="*"  ValidationGroup="avail"></asp:RequiredFieldValidator>
        </td>
        <td>
            <asp:Button ID="Button1" runat="server" Text="Book Availability" OnClick="btnavail_Click"  ValidationGroup="avail"/>
        </td>
        <td>
            <asp:Label ID="lblbookavail" runat="server" Visible="false"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>
            Student Id
        </td>
        <td>
            <asp:TextBox ID="txtstudentid" runat="server" ValidationGroup="save"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Requires Studentid"
                ControlToValidate="txtstudentid" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            No of Book
        </td>
        <td>
            <asp:TextBox ID="txtnoofbook" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="Requires no of book"
                ControlToValidate="txtnoofbook" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            Date of lending
        </td>
        <td>
            <asp:TextBox ID="txtdate" runat="server"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td>
            Password
        </td>
        <td>
            <asp:TextBox ID="txtpassword" TextMode="Password" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="Requires Studentid"
                ControlToValidate="txtpassword" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
        <td>
            <asp:Label ID="lblpassword" runat="server" Visible="false"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>
            <asp:Button ID="Button2" runat="server" Text="Submit" 
                OnClick="btnsubmit_Click"  ValidationGroup="save" style="height: 26px"/>
        </td>
    </tr>
</table>

书名
学生证
书号
贷款日期
密码

我使btnsubmit\u的原因验证单击为true。当我双击该按钮时,它会起作用。@MonaVaradharaju-您需要完全删除
RequiredFieldValidator2。启用
RequiredFieldValidator2。禁用来自代码隐藏的
代码。@MonaVaradharaju-什么不起作用?你们的意思是,当你们并没有在文本框中输入任何内容并点击按钮时,表单就发回服务器了?你清除缓存了吗?请检查并让我知道。@RahulSingh-我附上了我的HTML代码。你能看到吗?如果我想让TextBox1验证组用于btnavail,TextBox2验证组用于btnsubmit,那么我想做什么呢?因此,您可以创建两个不同的验证组,一个用于“提交”按钮,另一个用于“可用”按钮。在我的情况下,您不必在代码中使用原因验证或任何其他东西,如清理和禁用验证,只需使用验证组即可。@MonaVaradharaju使用了您的代码并更新了答案。。使用更新答案的代码
<table align="center">
    <tr>
        <td>
            Book Name
        </td>
        <td>
            <asp:TextBox ID="txtbookname" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Requires book name"
                ControlToValidate="txtbookname" ForeColor="Red" Text="*"  ValidationGroup="avail"></asp:RequiredFieldValidator>
        </td>
        <td>
            <asp:Button ID="Button1" runat="server" Text="Book Availability" OnClick="btnavail_Click"  ValidationGroup="avail"/>
        </td>
        <td>
            <asp:Label ID="lblbookavail" runat="server" Visible="false"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>
            Student Id
        </td>
        <td>
            <asp:TextBox ID="txtstudentid" runat="server" ValidationGroup="save"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Requires Studentid"
                ControlToValidate="txtstudentid" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            No of Book
        </td>
        <td>
            <asp:TextBox ID="txtnoofbook" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="Requires no of book"
                ControlToValidate="txtnoofbook" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            Date of lending
        </td>
        <td>
            <asp:TextBox ID="txtdate" runat="server"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td>
            Password
        </td>
        <td>
            <asp:TextBox ID="txtpassword" TextMode="Password" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="Requires Studentid"
                ControlToValidate="txtpassword" ForeColor="Red" Text="*"  ValidationGroup="save"></asp:RequiredFieldValidator>
        </td>
        <td>
            <asp:Label ID="lblpassword" runat="server" Visible="false"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>
            <asp:Button ID="Button2" runat="server" Text="Submit" 
                OnClick="btnsubmit_Click"  ValidationGroup="save" style="height: 26px"/>
        </td>
    </tr>
</table>