我的asp.net计数器不起作用

时间:2016-07-10 08:07:17

标签: asp.net

我有一个计算预订座位的柜台。我想当座位数超过2时,网站会向客户提出错误。但这个计数器不起作用。客户可以预订超过2个座位而且它的不良。请帮助我。

    protected void btn_next_Click(object sender, EventArgs e)
{

    int t = 0;
    int c = 0;

if(t<=2){

    string seatname;
    string seatnumber;

    seatname = DropDownList1_SeatName.SelectedItem.ToString();
    seatnumber = DropDownList2_SeatNumber.SelectedItem.ToString();

    //چک کردن انتخاب نکردن دو صندلی تکراری توسط یک نفر
    string strquery = "select count(*) from SingleSeatTable where SeatNumber=@SeatNumber";

    SqlConnection connection2 = DBConnection.getConnection();
    connection2.Open();
    SqlCommand cmd2 = new SqlCommand();
    cmd2.Connection = connection2;
    cmd2.CommandText = strquery;

    cmd2.Parameters.Add("@SeatNumber", seatnumber);

    int intRowCount1 = (int)cmd2.ExecuteScalar();
    connection2.Close();


    if (intRowCount1 == 1)
    {
        Messages myMsg = new Messages(); // ایجاد نمونه از کلاس
        myMsg.CreateMessageAlert("صندلی رزرو شده است . صندلی دیکری انتخاب نماییدو یا در صورت رزرو تمامی صندلی ها میز و شماره صندلی را دیگری انتخاب نمایید.");

    }


    else
    {
        /////////////////////counter
        //   int t = 0;
        //  int c = 0;

        //  if(t<=2){

        string strQuery = "INSERT INTO [SingleSeatTable](SeatNumber,TableName,EventCode,Reserved,customer_id)" + "VALUES(@SeatNumber,@TableName,@EventCode,@Reserved,@customer_id)";

        SqlConnection connection = DBConnection.getConnection();
        connection.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = connection;
        cmd.CommandText = strQuery;

        string cis = Session["customerID"].ToString();
        /******query No.1********/
        cmd.Parameters.Add("@SeatNumber", seatnumber);
        cmd.Parameters.Add("@TableName", seatname);
        cmd.Parameters.Add("@EventCode", "100");
        cmd.Parameters.Add("@Reserved", "1");
        cmd.Parameters.Add("@customer_id", cis);

        cmd.ExecuteNonQuery();
        connection.Close();
        Response.Redirect("ReservationSucces.aspx");
        t = c++;
        // t = c++;
        //  }
    }



    }

          else
        {
            Messages myMsg = new Messages(); // ایجاد نمونه از کلاس
            myMsg.CreateMessageAlert("ظرفیت رزرو شما پر شده است . شما نمی توانید بیش از دو صندلی انتخاب نمایید");
        }


       }

1 个答案:

答案 0 :(得分:0)

计数器无效,因为t和c变量范围位于单击功能内。每次调用此函数时,它都会将t和c值重置为0(零)。

  

在插入表格之前,首先检查数据库中每个客户的座位数。

     Messages myMsg = new Messages();
    short seatCounts = 0;
            string sql=  "select count(customer_id) from SingleSeatTable where customer_id =@customer_id";
            SqlConnection conn = DBConnection.getConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add("@customer_id", SqlDbType.VarChar);
            cmd.Parameters["@customer_id"].Value = cis;
            try
            {
                conn.Open();
                seatCounts = (Int32)cmd.ExecuteScalar();
            }
            catch (Exception ex)
            {

              myMsg.CreateMessageAlert(ex.Message);            
            }
    if(seatCounts < 2)
    {
     //allow to insert another seat
    }
    else 
    {
      myMsg.CreateMessageAlert("you can not add more than two seats"); //or your message
   }