如何解决foreach循环仅获取最后一条记录到gridview c#asp.net
嗨,我想使用字符串构建器从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();
}
}
}
解决方法
您正在遍历每个供应商并覆盖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();
}
}
,
您一次又一次地为每个供应商代码绑定网格。
尝试一下
<a href="myLink"
target="popup"
onclick="window.open('myLink','popup','width=600,height=600'); return false;">
Open Link in Popup
</a>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。