0

各位程序员,我正在尝试获取 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

任何想法表示赞赏,
狮子座

4

2 回答 2

2

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

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

因为数组是从零开始的,而计数不是。

于 2013-04-11T04:01:05.733 回答
0

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

干杯。

于 2013-04-13T21:36:16.997 回答