【问题标题】:Why does my dynamic textbox not remove on first click?为什么我的动态文本框在第一次点击时没有删除?
【发布时间】:2015-01-16 01:18:40
【问题描述】:

我开始this question 并能够得到我最初问题的答案。现在文本框被删除,但只有我第二次单击删除按钮。这是我尝试过的

protected void btnRemoveTextBox_Click(object sender, EventArgs e)
{
    foreach (Control control in PlaceHolder1.Controls)
    {
        var tb = new TextBox();
        tb.ID = "Textbox" + counter;
        if ((control.ID == tb.ID.ToString()) && (control.ID != null))
        {
            controlIdList.Remove(tb.ID);
            ViewState["controlIdList"] = controlIdList;
        }
    }
}

当我逐步使用断点和错误调试时,代码运行两次没有错误,但第二次通过它删除按钮。

【问题讨论】:

  • 您的 Page_Load 方法是什么样的?你有 Page_PreRender 方法吗?
  • 因为您在LoadViewState 方法中创建和添加了文本框(在页面生命周期的早期),这里只从controlIdList 中删除了一个id,而不是从控件树中删除。注意:您不需要在btnRemoveTextBox_Click 方法中创建新的TextBox 实例。

标签: c# asp.net webforms


【解决方案1】:

因为您在LoadViewState 方法中创建和添加了文本框(在页面生命周期的早期),这里只从controlIdList 中删除了一个id,而不是从控件树中删除。注意:您不需要在btnRemoveTextBox_Click 方法中创建新的TextBox 实例。

protected void btnRemoveTextBox_Click(object sender, EventArgs e)
{
  foreach (Control control in PlaceHolder1.Controls)
  {
    string id = "Textbox" + counter;
    if (control.ID == id)
    {
      controlIdList.Remove(id);
      PlaceHolder1.Controls.Remove(control);
      break;
    }
  }
}

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2020-07-29
    相关资源
    最近更新 更多