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>