您好 我从其他页面获取会话数组值。我希望所有的值都与gridview绑定。但我只得到数组的最后一个值。我使用了以下代码:
int[] a = (int[])Session["values"];
for (int i = 0; i < a.Length; i++)
{
str = "select * from Quest_Info where Quest_id='" + a[i] + "' order by Quest_id";
SqlDataAdapter da2 = new SqlDataAdapter(str, sqlconn);
DataSet ds2 = new DataSet();
da2.Fill(ds2, "Result");
reviewgrid.DataSource = ds2;
reviewgrid.DataBind();
}
为什么我只获得第一个价值? Asp.net c# 谢谢。
答案 0 :(得分:0)
您正在为数组中的每个值执行一个新命令,并重新绑定网格。
网格只能有一个数据源。每次调用DataBind()时,它都会删除之前网格中的内容,并将其绑定到新源。
您需要修改查询以一次返回所需的所有行,而不是多次执行查询并每次返回一行。
答案 1 :(得分:0)
因为您正在遍历值列表并重置每个数据绑定的select命令。数据网格只能有一个数据绑定,所以它是你得到的最后一个数据绑定。
您需要执行以下操作:
int[] a = (int[])Session["values"];
string s = String.Join(",", a); // join the array into a comma-separated string
SqlDataSource1.SelectCommand = "select * from Quest_Info where Quest_id in (" + s + ") order by Quest_id";
reviewgrid.DataBind();