关于在asp.net c#中将数据绑定到gridview

时间:2011-04-11 05:23:05

标签: asp.net

您好 我从其他页面获取会话数组值。我希望所有的值都与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# 谢谢。

2 个答案:

答案 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();