2013-03-11 4 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> 

CodeBehind

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

все еще не создано текстовое поле, и оно также делает postback также @Aarif –

+0

alert (container); –

+0

Я опубликовал результат оповещения в своем вопросе @Aarif –

2

Используйте это внутри кнопки события click.

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

вы можете добавить столько текстовых полей и хотите, используя this..But когда постбэк их трудно manage.Refer ссылки ниже, чтобы узнать больше о динамических элементов управления и постбэков ..

Dynamic Web Server Controls and View State 1.

2. Dynamic Web Controls, Postbacks, and View State

+0

Мне нужно предоставить пользователю возможность создавать столько текстовых полей, сколько он захочет, тогда я получу значения textboxes @coder –

+0

@IT_info Я отредактировал свой ответ, проверьте его. – coder

+0

НО, как я буду избегать обратной передачи? @coder –

0

Я думаю, что в Javascript, вы можете использовать, как это. Надеюсь, это вам поможет ...

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

// Присвоить различные атрибуты элементу.

    element.setAttribute("value", "text"); 
<SpanElement>.appendChild(element); 
Смежные вопросы