2015-04-23 38 views
0

我正在動態創建一個包含文本框的表。我用下面的代碼這樣做:在ASP動態表中查找文本框控件

<asp:Table ID="SSGrid" runat="server"></asp:Table> 

表正確填充,但是當我嘗試訪問更新後的值:

foreach (DataRow row in Score_Sheet.Rows) // Loop over the rows. 
       { 
        int rowIndex = Score_Sheet.Rows.IndexOf(row); // Not sure if i need this yet 

        Label label = new Label(); 
        TextBox txt = new TextBox(); 
        txt.Text = row["Value"].ToString(); 
        txt.ID = row["Risk"].ToString(); 
        label.Text = row["Risk"].ToString() + "  =  "; 
        rows = new TableRow(); 
        cell = new TableCell(); 
        cell.Controls.Add(label); 
        cell2 = new TableCell(); 
        cell2.Controls.Add(txt); 


        rows.Controls.Add(cell); 
        rows.Controls.Add(cell2); 
        SSGrid.Controls.Add(rows); 


       } 

這是通過該代碼添加表到我的網頁從表格的文本框中我得到一個空引用異常。

我發現控制代碼是這樣的:

TextBox txt_any = (TextBox)SSGrid.FindControl("ANY"); 
       string anyany = txt_any.Text; 
       row1["Value"] = any; 

我怎麼能訪問在該文本被更新的價值?

謝謝!

+0

嘗試重新綁定網格。 – prashant

+0

您需要遞歸查找控件。 – Mairaj

回答

0

由於您在此處使用動態生成的控件,因此要訪問它們或它們的值,必須在頁面回發時重新創建它們。這是因爲動態控件在視圖上呈現後會失去它們的狀態,並且在回發之後再次使用它們的唯一方法是在代碼隱藏中重新創建它們。

所以在這裏,您只需要使用您首次使用的代碼重新創建表格。

您可以將該代碼放在您的Page_Loadif(!IsPostBack)代碼塊之外,這樣可以幫助您順利完成。

希望這會有所幫助。