繁体   English   中英

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

[英]Failed to get the values of dynamically added user controls in asp.net

这是在我的用户控件中

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

这就是我将此控件添加到占位符的方式

int count = Convert.ToInt32(Session["AddedRows"]);
        ++count;
        for (int i = 0; i < count; i++)
        {
            // Add the usercontrol dynamically
            Control webUserControl = (Control)Page.LoadControl("ctrlEntryRows.ascx");
            placeRows.Controls.Add(webUserControl);
        }

        Session["AddedRows"] = count.ToString();

这就是单击按钮时我试图获取控件的方式

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

但是代码显示为0 count.IT甚至没有进入循环。 如何获得动态添加的用户控件的值?

谢谢

尝试这个

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

更新:

您应该阅读诸如此类的有关动态控件和状态管理的文章。

  1. http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i
  2. http://www.4guysfromrolla.com/articles/092904-1.aspx
  3. 维持回发时动态添加的用户控件的状态?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM