动态创建文本框而不回发

时间:2013-03-11 10:06:13

标签: asp.net dynamic updatepanel postback

我想有一个按钮,onclick将动态创建一个没有任何回发的文本框。我试图使用更新面板,但到目前为止我还没有成功。单击按钮时不会创建任何内容。以下是我使用过的代码:

 <asp:PlaceHolder ID="textboxes" runat="server"/>

     <asp:ScriptManager ID="scriptMgr" runat="server" />
                <asp:UpdatePanel ID="updatePnl" runat="server">
                    <ContentTemplate>
                        <div>
                            <asp:Button id="Button" text="Add Destination" OnClick="btnCreate_Click" runat="server"/>
                        </div>
                    </ContentTemplate>
                </asp:UpdatePanel>

代码隐藏

  protected void btnCreate_Click(object sender, EventArgs e)
        {
             textboxes.Controls.Add(new TextBox() { ID = "txt" + 1 });

        }

这是我在aler(容器)上得到的东西;:

enter image description here

3 个答案:

答案 0 :(得分:2)

您必须使用OnClientClick创建没有回发的文本框

<asp:Button id="Button" text="Add Destination" OnClientClick="return CreateTxt(); runat="server"/>

<script type="text/javascript">


function CreateTxt()
{
    var container = document.getElementById("myContainerDiv");
    var html = document.getElementById('myContainerDiv').innerHTML;
    html = html + "<input type=text ... /><br />";
    container.innerHTML= html;
   return false;
}

</script>

myContainerDiv是您要添加文本框的div的名称。

答案 1 :(得分:2)

在按钮点击事件中使用此功能。

    TextBox t = new TextBox();
    t.ID = "txt";
    this.form1.Controls.Add(t);

你可以使用这个添加任意数量的文本框..但是当回发发生时,它们很难管理。请参阅以下链接以了解有关动态控件和回发的更多信息..

1。Dynamic Web Server Controls and View State

2。Dynamic Web Controls, Postbacks, and View State

答案 2 :(得分:0)

我认为在Javascript中,您可以这样使用。希望这有助于你...

var element = document.createElement("jsTextBox"); 

//为元素分配不同的属性。

    element.setAttribute("value", "text");
<SpanElement>.appendChild(element);