在Gridview中获取Cell的值

时间:2013-04-11 03:51:36

标签: c# asp.net

研究员,我试图在Gridview的最后一列中获取值(已绑定到某个SQL数据库),然后用生成的超链接替换该单元格的内容,具体取决于该单元格的值可能是什么。 到目前为止我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    /* Load the Required Data */
    StrCommand="SELECT "+ Request.QueryString["Cols"] + " FROM " +  Request.QueryString["Category"];
    SqlConnection myConnection = new SqlConnection();
    myConnection.ConnectionString = "Data Source=localhost;" + "Initial Catalog=Categories; Integrated Security=SSPI";
    SqlCommand myCommand = new SqlCommand(StrCommand, myConnection);
    myConnection.Open();
    SqlDataReader DataReader1 = myCommand.ExecuteReader();
    ProductList.DataSource = DataReader1;
    ProductList.DataBind();
    myConnection.Close();

    /* Post-binding modifications are now applied to the Grid View */

    /* Generate the column containing the add-to-cart buttons */
    for (int j = 0; j < ProductList.Rows.Count-1; j++)
    {
        int id_holder = int.Parse(ProductList.Rows[j].Cells[ProductList.Columns.Count-1].Text); 

    }


}

不幸的是,这段代码失败了,我收到了这个错误:

Specified argument was out of the range of valid values. Parameter name: index

赞赏任何想法,
利奥

2 个答案:

答案 0 :(得分:2)

如果失败的索引超出范围,请将for语句更改为:

for (int j = 0; j < ProductList.Rows.Count - 1; j++)

由于数组基于零,而计数不是。

答案 1 :(得分:0)

我找到了答案,当GridView.AutoGenerateColumns属性设置为“True”时,ProductList.Columns.Count不会更新,使其值为“0”。另一种方法是使用:ProductList.Rows [0] .Cells.Count。否则,我们可以将AutoGenerateColumns设置为false并构建我们自己的列模板。

干杯。