2015-12-14 10 views
0

Я огляделся повсюду в stackoverflow и google, но не нашел никакого успешного ответа, который я могу использовать, поэтому я решил опубликовать свой вопрос здесь.Сравнение значения в ярлыке со значением, введенным в текстовое поле, чтобы получить значение из базы данных MySQL C# asp.net

У меня есть метка asp, которая показывает общее количество доступных ваучеров, которые могут быть назначены пользователем, и текстовое поле asp, которое требует, чтобы пользователь вводил количество ваучеров, которые они хотели бы назначить.

Мне нужно найти способ проверить, что значение, введенное в текстовое поле, меньше или равно числу в метке.
Я использую валидатор сравнения на моей странице ascx, но это, похоже, не работает.

Вот мой код, который я в настоящее время

Это мой код для переднего конца: 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> 

Это мой код для задней части: 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; 
} 

Я пытаюсь накануне Я могу придумать, поэтому любая помощь будет очень признательна.
У меня такое ощущение, что я не вижу выражения if else где-то в коде ascx.cs, что, возможно, является причиной, но поскольку я довольно новичок в C# и asp.net, я не уверен.

+1

в CompareValidator "Val ueToCompare "ожидает значение, а не имя метки. так что, может быть, заменить «lblCount» на «<% lblCount.Value%>»? – NPToita

+0

Это сработало! Спасибо! Я должен буду это помнить на будущее. – skaur

ответ

0

хорошо, если вы traying сравнить два управления, было бы:

controltocompare вместо ValueToCompare

ControlToValidate = "noOfVouchers"
controltocompare = "lblCount"

Пример:

<asp:TextBox runat="server" id="txtSmallNumber" /> 
<asp:TextBox runat="server" id="txtBigNumber" /> 

<asp:CompareValidator runat="server" id="cmpNumbers" controltovalidate="txtSmallNumber" controltocompare="txtBigNumber" operator="LessThan" type="Integer" errormessage="The first number should be smaller than the second number!" /><br /> 
+0

Это было первое, что я пробовал, и это не сработало, поэтому я пошел с ValueToCompare. – skaur

+0

Я вижу, что вы уже нашли свой ответ, но мой ответ не сработает, если вы не изменили тип на целое, а не на строку (type = "Integer") –

+0

Да. Это было бы немного беспорядочно, когда я получил свою базу данных, поэтому я постарался максимально упростить ее. – skaur