C# 无法获取asp.net中动态添加的用户控件的值

C# 无法获取asp.net中动态添加的用户控件的值,c#,asp.net,user-controls,C#,Asp.net,User Controls,这是我的用户控制 <div class=" row-fluid"> <div class="span4" style="overflow: hidden;"> <asp:DropDownList ID="ddlAccountName" runat="server" DataSourceID="ChartOfAccountsforVouchers" DataTextField="AccountName" DataValueField="Char

这是我的用户控制

<div class=" row-fluid">
<div class="span4" style="overflow: hidden;">
    <asp:DropDownList ID="ddlAccountName" runat="server" DataSourceID="ChartOfAccountsforVouchers"
        DataTextField="AccountName" DataValueField="ChartOfAccID">
    </asp:DropDownList>
   <%-- <asp:EntityDataSource ID="ChartOfAccountsforVouchers" runat="server" ConnectionString="name=CnFV1MainModelEntities"
        DefaultContainerName="CnFV1MainModelEntities" EnableFlattening="False" EntitySetName="ChartOfAccounts"
        Select="it.[ChartOfAccID], it.[AccountName]">
    </asp:EntityDataSource>--%>
</div>
<div class="span4">
    <asp:TextBox ID="txtValue" MaxLength="10" CssClass="numeric input-block-level" runat="server"></asp:TextBox>
</div>
<div class="span4">
    <asp:TextBox ID="txtValueB" MaxLength="10" CssClass="numeric input-block-level" runat="server"></asp:TextBox>
</div>
但是代码显示0计数。它甚至没有进入循环。如何获取动态添加的用户控件的值

谢谢

试试这个

if (placeRows.Controls.Count > 0)
            {
                foreach (Control ctrl in placeRows.Controls)
                {
                    TextBox txt = (TextBox)ctrl.FindControl("txtValue");
                    TextBox txtB = (TextBox)ctrl.FindControl("txtValueB");
                    string message = txt.Text + txtB.Text;
                }
            }
更新:

您应该阅读一些关于动态控件和状态管理的文章


  • 问题是它甚至没有进入循环
    if (placeRows.Controls.Count > 0)
                {
                    foreach (Control ctrl in placeRows.Controls)
                    {
                        TextBox txt = (TextBox)placeRows.FindControl("txtValue");
                        TextBox txtB = (TextBox)placeRows.FindControl("txtValueB");
                        string message = txt.Text + txtB.Text;
                    }
                }
    
    if (placeRows.Controls.Count > 0)
                {
                    foreach (Control ctrl in placeRows.Controls)
                    {
                        TextBox txt = (TextBox)ctrl.FindControl("txtValue");
                        TextBox txtB = (TextBox)ctrl.FindControl("txtValueB");
                        string message = txt.Text + txtB.Text;
                    }
                }