嗨,我想使用字符串构建器从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();
}
}
}
答案 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>