2012-07-02 3 views
-2

for-if 루프를 사용하여 몇 개의 CheckBoxList 컨트롤을 실행하여 확인란이 선택되어 있는지 확인하려고합니다. 이 옵션을 선택하면 DB에 대한 INSERT 문이 실행됩니다.IF 루프가 올바르게 작동하지 않는 경우

첫 번째 CheckBoxList (stapleCheckBoxList)가 제대로 작동합니다 (예 : 4 개의 확인란을 모두 선택하면 해당 항목이 db에 삽입됩니다). 그러나 두 번째 CheckBoxList (seafoodCheckBoxList)에서는 선택한 첫 번째 체크 상자에서만 INSERT를 수행하는 것처럼 보입니다. 누구든지 아래 코드를 잘못 식별 할 수 있습니까?

protected void btnTSubmit_Click(object sender, EventArgs e) 
    { 
     int i; 
     int intOrderNo = (int)Session["sOrderNo"]; 
     int Qty; 
     int UnitPrice; 
     string ProdId; 

     if (txtPaxQty.Text != String.Empty) 
     { 
      UnitPrice = 12; 
      Qty = int.Parse(txtPaxQty.Text); 
      ProdId = "PK001"; 

      OleDbConnection DBconn2 = new OleDbConnection(); 
      DBconn2.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data source=" 
         + Server.MapPath("~/App_Data/ParissDB.mdb"); 
      OleDbCommand cmd = new OleDbCommand(); 
      cmd.Connection = DBconn2; 
      cmd.CommandType = System.Data.CommandType.Text; 
      cmd.CommandText = "INSERT INTO itemsTable(iOrderNo, iProductId, iQty, iUnitPrice)" 
      + "VALUES (@OrderNo, @ProductId, @Qty, @UnitPrice)"; 
      cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
      cmd.Parameters.AddWithValue("@ProductId", ProdId); 
      cmd.Parameters.AddWithValue("@Qty", Qty); 
      cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
      DBconn2.Open(); 
      cmd.ExecuteNonQuery(); 
      DBconn2.Close(); 
     } 

     for (i = 0; i < stapleCheckBoxList.Items.Count; i++) 
     { 
      String str = ""; 

      if (stapleCheckBoxList.Items[i].Selected) 
      { 

       str = stapleCheckBoxList.Items[i].Text; 

       OleDbConnection DBconn = new OleDbConnection(); 
       DBconn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data source=" 
          + Server.MapPath("~/App_Data/ParissDB.mdb"); 

       Qty = 0; 
       UnitPrice = 0; 

       OleDbCommand cmd = new OleDbCommand(); 
       cmd.Connection = DBconn; 
       cmd.CommandType = System.Data.CommandType.Text; 
       cmd.CommandText = "INSERT INTO itemsTable(iOrderNo, iProductId, iQty, iUnitPrice)" 
       + "VALUES (@OrderNo, @ProductId, @Qty, @UnitPrice)"; 

       //Staple 

       if (stapleCheckBoxList.Items[i].Text == "Yang Chow Fried Rice") 
       { 
        str = "ST001"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (stapleCheckBoxList.Items[i].Text == "Pineapple Fried Rice") 
       { 
        str = "ST002"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (stapleCheckBoxList.Items[i].Text == "Mee Goreng") 
       { 
        str = "ST003"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (stapleCheckBoxList.Items[i].Text == "Fried Udon with Seafood") 
       { 
        str = "ST004"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 


       //Response.Redirect("Delivery.aspx"); 
      } 
     } 

     for (i = 0; i < seafoodCheckBoxList.Items.Count; i++) 
     { 
      String str2 = ""; 

      if (seafoodCheckBoxList.Items[i].Selected) 
      { 

       str2 = seafoodCheckBoxList.Items[i].Text; 

       OleDbConnection DBconn = new OleDbConnection(); 
       DBconn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data source=" 
          + Server.MapPath("~/App_Data/ParissDB.mdb"); 

       Qty = 0; 
       UnitPrice = 0; 

       OleDbCommand cmd = new OleDbCommand(); 
       cmd.Connection = DBconn; 
       cmd.CommandType = System.Data.CommandType.Text; 
       cmd.CommandText = "INSERT INTO itemsTable(iOrderNo, iProductId, iQty, iUnitPrice)" 
       + "VALUES (@OrderNo, @ProductId, @Qty, @UnitPrice)"; 

       //Seafood 

       if (seafoodCheckBoxList.Items[i].Text == "Butter Prawns") 
       { 
        str2 = "SE002"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str2); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (seafoodCheckBoxList.Items[i].Text == "Cereal Prawns") 
       { 
        str2 = "SE001"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str2); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (seafoodCheckBoxList.Items[i].Text == "Thai Style Prawns") 
       { 
        str2 = "SE003"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str2); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       if (seafoodCheckBoxList.Items[i].Text == "BBQ Squid") 
       { 
        str2 = "SE004"; 
        cmd.Parameters.AddWithValue("@OrderNo", intOrderNo); 
        cmd.Parameters.AddWithValue("@ProductId", str2); 
        cmd.Parameters.AddWithValue("@Qty", Qty); 
        cmd.Parameters.AddWithValue("@UnitPrice", UnitPrice); 
        DBconn.Open(); 
        cmd.ExecuteNonQuery(); 
        DBconn.Close(); 
       } 

       Response.Redirect("Delivery.aspx"); 
      } 

     } 
+1

코드에서 중복되는 부분이 많은 것처럼 보입니다. productId를 변경하기 위해 productId 값을 사용할 수 있었습니까? 그렇다면 텍스트에 대한 테스트의 경우 해당 항목이 필요하지 않을 수 있습니다. 텍스트가 잘못 되었기 때문에 일치하지 않을 수도 있습니다. . – tsukimi

답변

2

라인

Response.Redirect("Delivery.aspx"); 

for 루프 안에 있습니다. 따라서 처음으로 루프를 통과하면 이미 리디렉션됩니다. for 루프 이후로 리디렉션을 이동하십시오.

그리고 코드 리팩토링에 대해 심각하게 고려해야합니다. 다른 것들 중에서도 메서드로 변환 할 수있는 너무 많은 반복 된 요소가 있습니다.

+0

제안을 주셔서 감사합니다. 나는 그것을 방법으로 변환 할 것입니다. – aurelio