2013-03-11 67 views
1

我想有一个按钮,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

回答

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的名称。

+0

仍然没有文本框已经创建,它也做了一个回发@Aarif – 2013-03-11 10:21:19

+0

alert(container); – 2013-03-11 10:26:20

+0

我在我的问题中发布了提醒的结果@Aarif – 2013-03-11 10:31:09

2

在按钮点击事件中使用这个。

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

你可以添加尽可能多的文本框ü要使用this..But回发时发生,他们都难以manage.Refer下面的链接了解更多有关动态控件和回传..

1. Dynamic Web Server Controls and View State

2. Dynamic Web Controls, Postbacks, and View State

+0

我需要给用户创建尽可能多的文本框,他想要的然后我会得到的值textboxes @coder – 2013-03-11 10:22:14

+0

@IT_info我编辑了我的答案检查它.. – coder 2013-03-11 10:26:18

+0

但我该如何避免回发? @coder – 2013-03-11 10:26:48

0

我想在Javascript中,你可以使用这个样子。希望这可以帮助你...

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

//将不同的属性分配给元素。

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