2015-04-23 40 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)代码块之外,这样可以帮助您顺利完成。

希望这会有所帮助。