FindControl在GridView中找不到正确的控件

时间:2012-10-04 20:21:27

标签: c# asp.net .net gridview

我在GridView中遇到GridView和HiddenField的问题。我试图基于HiddenField的值来提取一些数据,这基本上是每个记录的row_id但是由于某种原因,无论我在GridView中选择哪一个,我都会得到相同的数据。下面的代码是我在GridView中使用查找HiddenField的代码。

任何帮助将不胜感激。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    foreach (GridViewRow item in GridView1.Rows)
    {
        if (item.RowType == DataControlRowType.DataRow)
        {
            rowid = (HiddenField)(item.Cells[0].FindControl("po_id_hf"));
        }
    }

    GridView2.DataSource = View_SP.v_asn_detail_by_asn_number(Int32.Parse(rowid.Value));
    GridView2.DataBind();

    step2.Visible = false;
    step3.Visible = true;
}

2 个答案:

答案 0 :(得分:4)

如何使用:

GridView1.Rows[e.RowIndex]

获取当前更新行?

编辑:您的代码将始终返回最后一个GridViewRows,因为它遍历整个GridViewRows集合,因此在结束时rowid将在gridview中具有最后一行ID。

答案 1 :(得分:0)

我在想这个,下面是解决方案:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
     string row_id = (((HiddenField)(GridView1.Rows[e.RowIndex].FindControl("po_id_hf"))).Value);


    GridView2.DataSource = View_SP.v_asn_detail_by_asn_number(Int32.Parse(row_id));
    GridView2.DataBind();

    step2.Visible = false;
    step3.Visible = true;
}

谢谢你们。