I have looked around everywhere on stackoverflow and google but have not found any successful answer that I can use, so I decided to post my question here.
I have an asp label that shows the total number of vouchers available to be assigned by the user and an asp textbox that requires the user to input the number of vouchers they would like to assign.
I need to find a way to check that the value entered in the textbox is less than or equal to the number in the label.
I am using a compare validator on my ascx page but that doesn't seem to be working.
Here is my code that I currently have
This is my code for the front end: ascx
<h4>
<b>
<asp:Label runat="server" ID="lblAvailableVoucherCount" Visible="false" ></asp:Label>
<asp:Label runat="server" ID="lblCount" Visible="false"></asp:Label>
</b>
</h4>
<table>
<tr>
<td>
<b>
<asp:Label runat="server" ID="lblGrp" Text="CHOOSE A GROUP" Visible="false"></asp:Label>
</b>
<asp:DropDownList runat="server" ID="GroupsDropDownList" Width="160px"
AutoPostBack="false" Visible ="false"></asp:DropDownList>
</td>
</tr>
<tr>
<td>
<b>
<asp:Label runat="server" ID="number"
Text="ENTER THE NUMBER OF VOUCHERS YOU WANT TO ASSIGN TO THE GROUP"
Visible="false" ></asp:Label>
</b>
<asp:TextBox ID="noOfVouchers" runat="server" Visible = "false"/>
</td>
<td>
<asp:CompareValidator runat="server"
ErrorMessage="You DO NOT have enough vouchers available to be assigned to the group!"
ControlToValidate="noOfVouchers" ValueToCompare="lblCount"
Operator="LessThanEqual" Type="String" ForeColor="#FF0000"
Font-Bold="true"></asp:CompareValidator>
</td>
<td>
<asp:RequiredFieldValidator runat="server"
ID="RequiredFieldValidatorNumVouchers"
ControlToValidate="noOfVouchers" Text="Required"
ErrorMessage="You MUST enter the number of vouchers you wish to assign the the group!"
></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label runat="server" ID="lbltest2" ForeColor="#FF0000"
Font-Bold="true" Visible="true"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Button runat="server" ID="assign" Text="Assign"
OnClick="assign_voucher_click" Visible="false" Width="150"
Height="35px"></asp:Button>
</td>
</tr>
</table>
This is my code for the back end: ascx.cs
//Assigning Vouchers to Groups
protected void assign_voucher_click(object sender, System.EventArgs e)
{
group_name = GroupsDropDownList.SelectedValue;
string InstId = "";
using (OdbcConnection dbConnection = new OdbcConnection(ConnStr))
{
dbConnection.Open();
{
OdbcCommand dbCommand = new OdbcCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandText = @"SELECT voucher_no_pk FROM vouchers WHERE admin_admin_email_id = ? AND voucher_status = 'NEW' LIMIT " + Convert.ToInt32(noOfVouchers.Text) + ";";
dbCommand.Parameters.AddWithValue("@admin_admin_email_id", username);
dbCommand.Parameters.AddWithValue("LIMIT", noOfVouchers.Text.ToString());
dbCommand.ExecuteNonQuery();
OdbcDataReader dataReader = dbCommand.ExecuteReader();
while (dataReader.Read())
{
Voucher_list.Add(dataReader["voucher_no_pk"]);
}
if (Voucher_list.Count == 0)
{
lblCount.Text = "Sorry your DO NOT have enough vouchers available";
}
dataReader.Close();
OdbcCommand dbCommand1 = new OdbcCommand();
dbCommand1.Connection = dbConnection;
//fetching the group id for the selected group name
dbCommand1.CommandText = @"SELECT group_id_pk FROM vouchergroup WHERE group_name = ? AND admin_admin_email_id = ?;";
dbCommand1.Parameters.AddWithValue("@group_name", group_name);
dbCommand1.Parameters.AddWithValue("@admin_admin_email_id", username);
dbCommand1.ExecuteNonQuery();
OdbcDataReader dataReader1 = dbCommand1.ExecuteReader();
while (dataReader1.Read())
{
group_id = dataReader1["group_id_pk"].ToString();
}
dataReader1.Close();
lbltest2.Text = "group id selected for group:'" + group_name + "'";
OdbcCommand dbCommand4 = new OdbcCommand();
dbCommand4.Connection = dbConnection;
dbCommand4.CommandText = @"SELECT instructor_inst_email FROM vouchergroup WHERE group_id_pk = " + group_id + ";";
dbCommand4.ExecuteNonQuery();
OdbcDataReader dataReader4 = dbCommand4.ExecuteReader();
while (dataReader4.Read())
{
InstId = dataReader4["instructor_inst_email"].ToString();
}
dataReader4.Close();
OdbcCommand dbCommand2 = new OdbcCommand();
dbCommand2.Connection = dbConnection;
//updating the vouchers table with the group id, voucher status and instructor email id
for (int i = 0; i < (Voucher_list.Count); i++)
{
dbCommand2.CommandText = @"UPDATE vouchers SET voucher_group_voucher_group_id =" + group_id + ", voucher_status = 'Available to Assign', instructor_instructor_email = ? WHERE voucher_no_pk = " + Convert.ToInt32(Voucher_list[i]) + ";";
dbCommand2.Parameters.AddWithValue("@instructor_instructor_email", InstId);
dbCommand2.ExecuteNonQuery();
}
createInstructorEmail(InstId, group_name, Voucher_list.Count);
if (Voucher_list.Count != 0)
{
lbltest2.Text = "Congratulations! Your vouchers have been assigned to group:<i>" + group_name + "</i>";
}
OdbcCommand dbCommand3 = new OdbcCommand();
dbCommand3.Connection = dbConnection;
dbCommand3.CommandText = @"SELECT vg.group_name AS 'GROUP NAME', vg.instructor_inst_email AS 'GROUP OWNER EMAIL', count(vo.voucher_no_pk) AS `count` FROM vouchergroup vg LEFT JOIN vouchers vo ON vg.group_id_pk = vo.voucher_group_voucher_group_id AND vo.admin_admin_email_id = ? GROUP BY vg.group_id_pk ;";
dbCommand3.Parameters.AddWithValue("@admin_admin_email_id", username);
dbCommand3.ExecuteNonQuery();
OdbcDataReader dataReader2 = dbCommand3.ExecuteReader();
if (dataReader2.HasRows)
{
groupList.DataSource = dataReader2;
groupList.DataBind();
dataReader2.Close();
}
else
{
assign.Visible = false;
lblGrp.Visible = false;
GroupsDropDownList.Visible = false;
number.Visible = false;
noOfVouchers.Visible = false;
lblgroupcreated.Text = "You DO NOT have any Groups yet. Create a New Group and then assign vouchers to them!";
}
}
dbConnection.Close();
}
noOfVouchers.Text = "";
assignMore.Visible = true;
assign.Visible = false;
}
I have been trying everything I can think of, so any help would be greatly appreciated.
I'm have a feeling that i'm missing an if else statement somewhere in the ascx.cs code that is possibly the cause but as i'm fairly new to c# and asp.net, i'm not sure.
well if you are traying to compare two control it would be:
controltocompare instead of ValueToCompare
controltovalidate="noOfVouchers"
controltocompare="lblCount"
Example: