2012-10-04 57 views
0

我在GridView中有一個GridView和一個HiddenField的問題。我試圖根據HiddenField的值獲取一些數據,這些數據基本上是每條記錄的row_id,但出於某種原因,無論我在GridView中選擇哪一個數據,我都會收到相同的數據。下面的代碼是我正在使用的在GridView中查找HiddenField的代碼。FindControl在GridView中找不到正確的控件

任何幫助將不勝感激。

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; 
} 
+0

你的標記怎麼樣?我認爲這將永遠得到最後一行的價值? – codingbiz

回答

4

關於使用什麼:

GridView1.Rows[e.RowIndex] 

得到當前更新的行?

編輯:您的代碼將始終返回最後一個GridViewRows,因爲它遍歷整個GridViewRows集合,因此最終rowid將在GridView中包含最後一行ID。

+0

正確,謝謝你的發帖。 – jorame

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; 
} 

謝謝你們。