研究员,我试图在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
赞赏任何想法,
利奥
答案 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并构建我们自己的列模板。
干杯。