为什么我的动态文本框不会在第一次点击时删除?

时间:2015-01-15 16:48:13

标签: c# asp.net webforms

我开始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;
        }
    }
}

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

1 个答案:

答案 0 :(得分:0)

因为您在LoadViewState方法中创建并添加了文本框(在页面生命周期的早期版本中),此处仅从controlIdList中删除ID,但不从控制树中删除。注意:您无需在TextBox方法中创建新的btnRemoveTextBox_Click实例。

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