foreach循环仅获取最后一条记录到gridview c#asp.net

时间:2020-08-11 10:46:09

标签: c# asp.net gridview

嗨,我想使用字符串构建器从db中获取数据,该字符串构建器是我从session的上一页获得的。但是当尝试绑定数据时,我只能在gridview中获取最后一个数据。请帮忙

下面的代码是我如何从gridview的复选框中获取多个值,然后使用字符串生成器和会话将其传递到下一页的方法。

 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString);
            StringBuilder strb = new StringBuilder();
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                GridViewRow row = GridView1.Rows[i];
                bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
                if (isChecked)
                {
                    // strb.Append(GridView1.Rows[i].Cells[7].Text ).AppendLine();
                    strb.Append(GridView1.Rows[i].Cells[7].Text).AppendLine();

                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Please select items to continue');", true);
                }
            }

           // Session["vendor"] = strb.ToString();
            Session["vendor"] = strb.ToString().Trim('\n');
            Response.Redirect("order.aspx");
                }
            }

在第2页中,我使用该会话获取值并在gridview中绑定。问题是只能从foreach循环中的字符串中获取最后一个值。

    if (!this.IsPostBack)
            {
                if (Session["vendor"] != null)
                {
                    string[] vendors = Session["vendor"].ToString().Split('\n');
                    foreach (string vendor in vendors)
                    {
                        var data = vendor.Trim();
                        
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString);
 sqlCommand cmd = new SqlCommand("select [Part number],Nomenclature,quantity,[quantity available],[unit price] from Catalouge where [Vendor Code]=('" + data + "')", conn);
                        conn.Open();
                        GridView1.DataSource = cmd.ExecuteReader();
                        GridView1.DataBind();
                    }
                }
            }

2 个答案:

答案 0 :(得分:2)

您正在遍历每个供应商并覆盖Grid数据。相反,您可以一次获取所有供应商的数据并将数据绑定到Grid。

请参考以下逻辑

if (!this.IsPostBack)
        {
            if (Session["vendor"] != null)
            {
                string[] vendors = Session["vendor"].ToString().Split('\n');
                string all_vendors = string.Join("','", vendors).Replace(" ", "");

                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString);
                sqlCommand cmd = new SqlCommand("select [Part number],Nomenclature,quantity,[quantity available],[unit price] from Catalouge where [Vendor Code] IN ('" + all_vendors + "')", conn);
                conn.Open();
                GridView1.DataSource = cmd.ExecuteReader();
                GridView1.DataBind();
            }
        }

答案 1 :(得分:0)

您一次又一次地为每个供应商代码绑定网格。

尝试一下

<a href="myLink" 
 target="popup" 
 onclick="window.open('myLink','popup','width=600,height=600'); return false;">
   Open Link in Popup
</a>