对于IF循环无法正常工作 [英] For IF Loop not working correctly

查看:130
本文介绍了对于IF循环无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用一个换,如果循环通过一些的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循环无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆