c# - 单击 LinkBut​​ton 上的动态文本框

标签 c# asp.net textbox linkbutton

我通过单击 LinkBut​​ton 在页面中创建动态文本框。

但是,之后,如果提交页面,我找不到动态创建的项目,因此无法将信息发送到数据库。

protected void lbAddTag_Click(object sender, EventArgs e)
{
   for (int i = 0; i < 3;i++ )
    {
        CreateTextBox("txtTag-" + i.ToString());
    }

}

private void CreateTextBox(string ID)
{
    TextBox txt = new TextBox();
    txt.ID = ID;
    txt.Width = Unit.Pixel(300);
    //txt.TextChanged += new EventHandler(OnTextChanged);
    txt.AutoPostBack = false;
    tagsPanel.Controls.Add(txt);

    Literal lt = new Literal();
    lt.Text = "<br /><br />";
    tagsPanel.Controls.Add(lt);
}

如果我输入:

foreach (Control c in tagsPanel.Controls)
{
    if (c is TextBox)
    {
        lblError.Text += c.ClientID + "  ,  ";
    }
}

在 lbAddTag_Click 方法中,我可以看到这些项目,并且它们存在,但是如果我提交页面并尝试在数据库中插入值,则什么也没有...

非常感谢任何提示。

最佳答案

如果动态创建控件,它们不会在提交时保留到控件层次结构/ View 状态中。

查看这篇文章:https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904-1.aspx

我宁愿有一个中继器控件,然后在 session 中维护一个 ArrayList 并将其用作中继器控件的数据源。当我想添加一行时,我宁愿在 session 中向 ArrayList 添加一行并重新绑定(bind)转发器控件。 如果您需要示例,请告诉我。

关于c# - 单击 LinkBut​​ton 上的动态文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630095/

相关文章:

c# - 在 C# 中获取证书存储名称列表

c# - Visual Studio 2012 找不到模板

c# - ASP.NET MVC + 填充下拉列表

c# - 访问整个项目中的模型变量 MVC5 Razor - 使用 Basecontroller 设置 BaseViewModel 并在 Layout 中使用它

javascript - 要再次显示该网页,Internet Explorer 需要重新发送

c# - 创建一个 Txt 文件并写入

c# - Windows 窗体在没有文本框的情况下添加文本

c# - 在 C# 中更改多行文本框的特定行

c# - 在 VS 2012 中添加 Fakes 时出错

c# - 弹出时禁用主页