我想用一个换,如果循环通过一些的CheckBoxList控件运行,看是否复选框被选中。如果选中,它会运行一个INSERT语句到数据库。
我的第一个的CheckBoxList(stapleCheckBoxList)的作品,因为它应该(例如,如果我选择了所有4个复选框,相应的项目将被插入到数据库)。然而,对于我第二次的CheckBoxList(seafoodCheckBoxList),它似乎只在做选择的第一个复选框一个INSERT。我的codeS低于任何人都可以找出什么是错?
保护无效btnTSubmit_Click(对象发件人,EventArgs的) { INT I; INT intOrderNo =(int)的会话[sOrderNo]; INT数量; INT单价; 串PRODID; 如果(txtPaxQty.Text!=的String.Empty) { 单价= 12; 数量= int.Parse(txtPaxQty.Text); PRODID =PK001; OleDbConnection的DBconn2 =新的OleDbConnection(); DBconn2.ConnectionString =供应商= Microsoft.Jet.OLEDB.4.0;数据源= +使用Server.Mappath(〜/ App_Data文件/ ParissDB.mdb); OleDbCommand的CMD =新的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(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn2.Open(); cmd.ExecuteNonQuery(); DBconn2.Close(); } 对于(i = 0; I< stapleCheckBoxList.Items.Count;我++) { 字符串str =; 如果(stapleCheckBoxList.Items [I] .Selected) { 海峡= stapleCheckBoxList.Items [I]。文; OleDbConnection的DBconn =新的OleDbConnection(); DBconn.ConnectionString =供应商= Microsoft.Jet.OLEDB.4.0;数据源= +使用Server.Mappath(〜/ App_Data文件/ ParissDB.mdb); 数量= 0; 单价= 0; OleDbCommand的CMD =新的OleDbCommand(); cmd.Connection = DBconn; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText =INSERT INTO itemsTable(iOrderNo,iProductId,iQty,iUnitPrice) +VALUES(@OrderNo,@ProductID,@Qty,@UnitPrice); //装订 如果(stapleCheckBoxList.Items [我]。文==杨洲州炒饭) { 海峡=ST001; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(stapleCheckBoxList.Items [我]。文==菠萝炒饭) { 海峡=ST002; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(stapleCheckBoxList.Items [我]。文==眉炒饭) { 海峡=ST003; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(stapleCheckBoxList.Items [我]。文==炒乌冬面海鲜) { 海峡=ST004; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } //Response.Redirect("Delivery.aspx); } } 对于(i = 0; I< seafoodCheckBoxList.Items.Count;我++) { 字符串str2的=; 如果(seafoodCheckBoxList.Items [I] .Selected) { STR2赛车= seafoodCheckBoxList.Items [I]。文; OleDbConnection的DBconn =新的OleDbConnection(); DBconn.ConnectionString =供应商= Microsoft.Jet.OLEDB.4.0;数据源= +使用Server.Mappath(〜/ App_Data文件/ ParissDB.mdb); 数量= 0; 单价= 0; OleDbCommand的CMD =新的OleDbCommand(); cmd.Connection = DBconn; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText =INSERT INTO itemsTable(iOrderNo,iProductId,iQty,iUnitPrice) +VALUES(@OrderNo,@ProductID,@Qty,@UnitPrice); //海鲜 如果(seafoodCheckBoxList.Items [我]。文==奶油虾) { STR2赛车=SE002; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR2); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(seafoodCheckBoxList.Items [我]。文==麦片虾) { STR2赛车=SE001; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR2); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(seafoodCheckBoxList.Items [我]。文==泰式大虾) { STR2赛车=SE003; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR2); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 如果(seafoodCheckBoxList.Items [我]。文==烧烤鱿鱼) { STR2赛车=SE004; cmd.Parameters.AddWithValue(@ OrderNo,intOrderNo); cmd.Parameters.AddWithValue(@的ProductId,STR2); cmd.Parameters.AddWithValue(@数量,数量); cmd.Parameters.AddWithValue(@单价,单价); DBconn.Open(); cmd.ExecuteNonQuery(); DBconn.Close(); } 的Response.Redirect(Delivery.aspx); } }解决方案
行
的Response.Redirect(Delivery.aspx);
是在你的为循环。因此,第一次经历的循环,你已经重定向。只需将重定向到为循环之后。
和你应该认真考虑重构你的code。有太多重复的东西,你可以转化为方法,等等。
I am trying to use a for-if loop to run through a few CheckBoxList controls, to see if a checkbox is checked. If checked, it will run an INSERT statement to the DB.
My first CheckBoxList (stapleCheckBoxList) works as it should (Eg. If i selected all 4 checkboxes, the corresponding items will be inserted into the db). However for my second CheckBoxList (seafoodCheckBoxList), it seems to only do an INSERT on the first checkbox that is selected. Could anyone identify whats wrong with my codes below?
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"); } }解决方案
The line
Response.Redirect("Delivery.aspx");is inside your for loop. So the first time it goes through the loop, you are already redirected. Just move the redirect to after the for loop.
And you should SERIOUSLY think about refactoring your code. There's too much repeated stuff that you can convert into methods, among other things.
更多推荐
对于IF循环无法正常工作
发布评论