为什么我的动态文本框在第一次点击时没有删除?
Why does my dynamic textbox not remove on first click?
我开始 并且能够得到我最初问题的答案。现在文本框被删除了,但只是我第二次单击删除按钮。这是我试过的
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;
}
}
}
当我逐步使用断点和错误调试时,代码运行了两次,没有错误,但是在第二次运行时,它删除了按钮。
因为您在 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;
}
}
}
我开始
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;
}
}
}
当我逐步使用断点和错误调试时,代码运行了两次,没有错误,但是在第二次运行时,它删除了按钮。
因为您在 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;
}
}
}