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