2011-05-17 60 views
0

动态表我有下表中的用户ASCX控制研究:问题与ascx控件

<tr runat="server" id="rowChangeSerNo"> 
     <td colspan="2"> 
      <table id="tblChangeSerNo" runat="server"> 
      </table> 
     </td> 
</tr> 
<tr id="row" runat="server"> 
    <td> 
     <asp:Button ID="btChangeSerNo" runat="server" Text="Update" OnClick="btChangeSerNo_onClick" /> 
    </td> 
</tr> 

我创建tblChangeSerNo动态与在DB中的当前值预先填充文本框。控制的想法是允许用户用新值更新数据库的值。问题是,当btChangeSerNo_onClick方法被称为:

  • 表不渲染,因为我做的预渲染
  • 即使我提供的表格上的Page_Load我无法访问更新的值用户,因为他们迷路了。

我该如何解决这个问题?

+0

你能告诉我们代码隐藏吗? – BenW 2011-05-17 10:54:58

回答

1

最好的做法是使用网格控制。

如果您更喜欢使用自己的代码,请按照这些步骤:

  1. 商店中的所有文本在全球领域的箱子,例如public List<TextBox> m_tableTextboxes = new List<TextBox>();和创建时添加到列表。
  2. 让代码创建的Page_Load动态控制,但执行它,只有当不就是回发:if (!Page.IsPostBack) { ... }
  3. 在按钮点击事件,从全球现场读出值。

在过去做了类似的事情,所以这个概念应该工作。

+0

问题是代码是在ascx控件中,所以公共列表 m_tableTextboxes = new List ();每行都执行一次,即使跨过回传:( – woolagaroo 2011-05-17 08:22:57

+0

@woola这应该不重要..据我记得,一旦控件添加到页面,他们应该留在回发,除非明确覆盖。我可能是错的,但它肯定值得一试。 – 2011-05-17 08:36:55