【问题标题】:How to add text boxes dynamically in asp.net C# and use the textbox values after adding如何在asp.net C#中动态添加文本框并在添加后使用文本框值
【发布时间】:2015-03-31 05:56:59
【问题描述】:

我能够动态添加文本框,但我无法使用动态添加的文本框的值 这是我的代码

int i = 0;
List<string> controlidlist = new List<string>();
protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);
    controlidlist = (List<string>)ViewState["controlidlist"];
    foreach (string Id in controlidlist)
    {
        i++;
        TextBox tb = new TextBox();
        tb.ID = Id;
        LiteralControl lineBreak = new LiteralControl();
        PlaceHolder1.Controls.Add(tb);
        PlaceHolder1.Controls.Add(lineBreak);
    }
}

这里正在执行动态添加文本框

   protected void Button1_Click(object sender, EventArgs e)
{

    i++;
    TextBox tb = new TextBox();
    tb.ID = "textboxes" + i;
    tb.Text = "textbox" + i;

    LiteralControl lineBreak = new LiteralControl("<br>");
    PlaceHolder1.Controls.Add(tb);
    PlaceHolder1.Controls.Add(lineBreak);
    controlidlist.Add(tb.ID);
    ViewState["controlidlist"] = controlidlist;

}

这里我想尝试获取动态添加的文本框值

  protected void datainput_Click(object sender, EventArgs e)
{
    string m = string.Empty;
    for (int f = 0; f < i; f++)
    {
        TextBox t = (TextBox)FindControl("textboxes"+f);
        string k = t.Text;
        m = m +","+k;


        }
    string h = m;
}

得到的错误是 “对象引用未设置为对象的实例”。 在 字符串 k = t.Text;

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    将其添加到容器中:

    <asp:Panel runat="server" ID="pnlTextboxes"></asp:Panel>
    
     foreach (string Id in controlidlist)
        {
            i++;
            TextBox tb = new TextBox();
            tb.ID = Id;
            LiteralControl lineBreak = new LiteralControl();
            pnlTextboxes.Controls.Add(tb);
            pnlTextboxes.Controls.Add(lineBreak);
        }
    

    和:

     TextBox t = (TextBox)pnlTextboxes.FindControl("textboxes"+f);
    

    更新:

    TextBox t = (TextBox)PlaceHolder1.FindControl("textboxes"+f);
    

    【讨论】:

    • 我应该替换占位符并将其添加到面板中
    • 如果您使用占位符,请在占位符中搜索。查看更新的答案@user3630591
    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多