如何删除动态添加的文本框?

用户1374985

在我的代码背后,我创建了一种asp:Textbox动态添加的方法

创建按钮操作以创建文本字段

List<string> controlIdList = new List<string>();
int counter = 0;
protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);
    controlIdList = (List<string>)ViewState["controlIdList"];
    foreach (string Id in controlIdList)
    {
        counter++;
        TextBox tb = new TextBox();
        tb.ID = Id;
        LiteralControl linebreak = new LiteralControl("<br />");
        LiteralControl openLI = new LiteralControl("<li>");
        LiteralControl closeLI = new LiteralControl("</li>");

        PlaceHolder1.Controls.Add(openLI);
        PlaceHolder1.Controls.Add(tb);
        PlaceHolder1.Controls.Add(closeLI);
        PlaceHolder1.Controls.Add(linebreak);
    }
}


protected void btnAddTextBox_Click(object sender, EventArgs e)
{
    foreach (Control control in PlaceHolder1.Controls)
    {               

        counter++;
        TextBox tb = new TextBox();
        tb.ID = "Textbox" + counter;

        LiteralControl linebreak = new LiteralControl("<br />");
        PlaceHolder1.Controls.Add(tb);
        PlaceHolder1.Controls.Add(linebreak);
        controlIdList.Add(tb.ID);
        ViewState["controlIdList"] = controlIdList;
    }
}

现在,当我尝试删除按钮时,发生的只是回发。控件不会被删除。这是我尝试过的:

编辑现在可以使用,但是由于某些原因,第一次单击文本框并不会删除,第二次单击时,文本框将被删除

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

您需要将数据包装在“更新面板”中,否则,每当您的页面必须转到服务器时,都会发生发。这样,当您的逻辑到达服务器时,您的删除逻辑确实可以在没有Postback的情况下执行

您也可以简单地将控件可见性设置为false。

另一种可能性是通过Client进行大量操作,这与jQuery一样简单.hide();.show();与jQuery一样简单

另外请记住,您的方法将在维护视图状态时造成困难提出的解决方案的另一个问题是,更新面板将页面存储在内存中,然后通过Ajax重新创建它。

<asp:UpdatePanel>您将需要避免Postback

老实说,您可以像这样简单地进行操作:

... btnRemoveTextbox_Click(..., ...)
{
     txtDynamic.Visibility = false;
}

就像我说的那样,尽管您可以使用服务器来执行此操作,但最好是通过Client Side然后再调用Service

重要说明:如果这些是您的事件处理程序名称,那么当您为它们设计了两个单独的任务时,两个名称就不应相同。


更新/示例

// Front-End:
<asp:ScriptManager ID="scmPage" runat="server" ></asp:ScriptManager>
<asp:UpdatePanel ID="updDemo" runat="server">
    <ContentTemplate>
        <asp:PlaceHolder ID="plhControl" runat="server"></asp:PlaceHolder>
        <asp:Button ID="btnCreateText" runat="server" Text="Create" OnClick="btnCreateText_Click" />
        <asp:Button ID="btnRemoveText" runat="server" Text="Remove" OnClick="btnRemoveText_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

// Backend:
protected void btnCreateText_Click(object sender, EventArgs e)
{
    var text = new TextBox();
    text.ID = "txtDynamic";

    plhControl.Controls.Add(text);

}

protected void btnRemoveText_Click(object sender, EventArgs e)
{
    var text = new TextBox();
    text.ID = "txtDynamic";
    text.Visible = false;
}

那实际上可行,我只是尝试了一下。这里要注意的一件事,您需要确保您具有有效的ID并填充适当的控件。

这段代码非常粗糙,对于生产来说并不明智,因为它适用于具有单个ID或包含验证的控件。在尝试删除控件之前,您需要遍历控件,确保检测到正确的ID并存在。您需要调试代码并进行验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态删除文本框

来自分类Dev

动态添加时删除标记为按钮的文本框

来自分类Dev

使用动态添加的按钮删除动态添加的 TinyMCE 文本框

来自分类Dev

根据选中的选择框动态添加删除和获取选择框和文本框的数据

来自分类Dev

动态选择框如何从我的文本框值向选择框动态添加选项

来自分类Dev

在jQuery中动态添加文本框

来自分类Dev

通过绑定动态添加文本框

来自分类Dev

在WPF中动态添加文本框

来自分类Dev

javascript以动态添加文本框

来自分类Dev

在HTML中动态添加文本框

来自分类Dev

Javascript 添加/删除文本框

来自分类Dev

jQuery:是否可以一起删除所有动态添加的文本框

来自分类Dev

使用javascript或appscript唯一地添加/删除动态文本框

来自分类Dev

如何创建动态文本框

来自分类Dev

如何验证动态文本框控件

来自分类Dev

动态添加文本框和文本区域

来自分类Dev

将类添加到动态添加的文本框

来自分类Dev

如何删除文本框边框

来自分类Dev

动态添加文本框的Javascript,然后再次将文本框转换为文本

来自分类Dev

如何删除在WPF网格中动态创建的文本框控件?

来自分类Dev

如何在JavaScript中使用动态ID删除文本框?

来自分类Dev

如何从输入文本框的值动态添加HTML表中的表行

来自分类Dev

如何使用jQuery为动态创建的文本框添加事件

来自分类Dev

如何将动态添加的文本框插入MySQL数据库

来自分类Dev

如何使用angularjs将动态行作为文本框添加到表

来自分类Dev

如何使用C#在gridview中读取动态添加的文本框值?

来自分类Dev

如何使用动态单选按钮添加事件以显示文本框

来自分类Dev

如何防止页面加载以清除我动态添加的文本框

来自分类Dev

使用jQuery删除动态创建的文本框

Related 相关文章

  1. 1

    动态删除文本框

  2. 2

    动态添加时删除标记为按钮的文本框

  3. 3

    使用动态添加的按钮删除动态添加的 TinyMCE 文本框

  4. 4

    根据选中的选择框动态添加删除和获取选择框和文本框的数据

  5. 5

    动态选择框如何从我的文本框值向选择框动态添加选项

  6. 6

    在jQuery中动态添加文本框

  7. 7

    通过绑定动态添加文本框

  8. 8

    在WPF中动态添加文本框

  9. 9

    javascript以动态添加文本框

  10. 10

    在HTML中动态添加文本框

  11. 11

    Javascript 添加/删除文本框

  12. 12

    jQuery:是否可以一起删除所有动态添加的文本框

  13. 13

    使用javascript或appscript唯一地添加/删除动态文本框

  14. 14

    如何创建动态文本框

  15. 15

    如何验证动态文本框控件

  16. 16

    动态添加文本框和文本区域

  17. 17

    将类添加到动态添加的文本框

  18. 18

    如何删除文本框边框

  19. 19

    动态添加文本框的Javascript,然后再次将文本框转换为文本

  20. 20

    如何删除在WPF网格中动态创建的文本框控件?

  21. 21

    如何在JavaScript中使用动态ID删除文本框?

  22. 22

    如何从输入文本框的值动态添加HTML表中的表行

  23. 23

    如何使用jQuery为动态创建的文本框添加事件

  24. 24

    如何将动态添加的文本框插入MySQL数据库

  25. 25

    如何使用angularjs将动态行作为文本框添加到表

  26. 26

    如何使用C#在gridview中读取动态添加的文本框值?

  27. 27

    如何使用动态单选按钮添加事件以显示文本框

  28. 28

    如何防止页面加载以清除我动态添加的文本框

  29. 29

    使用jQuery删除动态创建的文本框

热门标签

归档