none
Вопрос C# RRS feed

  • Вопрос

  • Вопрос новичка. Подскажите где находится описание такого функционала

    При нажатии на кнопку на странице создается новое текстовое поле.

    27 июля 2011 г. 7:37

Ответы

  • Как это делать на JavaScript можно почитать здесь

    На asp.net это делается таким образом:

    1) добавляется на страницу некий контейнер (Placeholder, Panel и т.д.)

    2) программно создается контрол:

    TextBox tb = new TextBox();

    tb.Id = "someId";

    3) созданный контрол добавляется в контейнер:

    placeholder.Controls.Add(tb);

    • Помечено в качестве ответа Abolmasov DmitryModerator 28 июля 2011 г. 9:38
    • Снята пометка об ответе Andrey_ua 28 июля 2011 г. 11:57
    • Помечено в качестве ответа Andrey_ua 28 июля 2011 г. 15:32
    28 июля 2011 г. 8:10

Все ответы

  • Здравствуйте.

    Уточните пожалуйста, что вы пишите (веб-сайт, десктопное приложение..) и какую технолию для этого используете (asp.net, asp.net mvc, silverlight, wpf, winforms..)?

    Чем подробней и понятней вопрос - тем быстрей и проще на него можно ответить.

    Спасибо.


    Для связи [mail]
    27 июля 2011 г. 8:18
    Модератор
  • Да, конечно.

    Веб-сайт, asp.net.

     

     

    27 июля 2011 г. 8:20
  • Тогда более правильным разделом для вопроса является раздел Веб, перенесу ваш вопрос туда.


    Для связи [mail]
    28 июля 2011 г. 7:11
    Модератор
  • Как это делать на JavaScript можно почитать здесь

    На asp.net это делается таким образом:

    1) добавляется на страницу некий контейнер (Placeholder, Panel и т.д.)

    2) программно создается контрол:

    TextBox tb = new TextBox();

    tb.Id = "someId";

    3) созданный контрол добавляется в контейнер:

    placeholder.Controls.Add(tb);

    • Помечено в качестве ответа Abolmasov DmitryModerator 28 июля 2011 г. 9:38
    • Снята пометка об ответе Andrey_ua 28 июля 2011 г. 11:57
    • Помечено в качестве ответа Andrey_ua 28 июля 2011 г. 15:32
    28 июля 2011 г. 8:10
  • Как это делать на JavaScript можно почитать здесь

    На asp.net это делается таким образом:

    1) добавляется на страницу некий контейнер (Placeholder, Panel и т.д.)

    2) программно создается контрол:

    TextBox tb = new TextBox();

    tb.Id = "someId";

    3) созданный контрол добавляется в контейнер:

    placeholder.Controls.Add(tb);

    Спасибо, то что и требовалось.

    На самом деле задача состоит в том чтобы при каждом последующем нажатии кнопки, появлялось новое текстовое поле.

     


    28 июля 2011 г. 9:08
  • Проблема не решена?


    Для связи [mail]
    28 июля 2011 г. 13:35
    Модератор
  • Нет. На самом деле задача состоит в том чтобы при каждом последующем нажатии кнопки, появлялось новое текстовое поле.
    28 июля 2011 г. 13:44
  • Ну а проблема в чем? Генерируйте столько полей, сколько вам надо.
    28 июля 2011 г. 14:05
  • Проблема в том что при нажатии кнопки первый раз появляется поле, при нажатии второй раз генерируется тоже самое  поле по новой и в том же месте, плюс ко всему удаляет старый текст предыдущего поля.
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="container.WebForm1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
     <title></title>
    </head>
    <body >
      <form id="form1" runat="server">
        <div>
          <asp:PlaceHolder ID="PlaceHolder1" runat="server">
          
          </asp:PlaceHolder>
    
          <br />
          <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
          
        </div>
      </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace container
    {
      public partial class WebForm1 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        
        protected void Button1_Click(object sender, EventArgs e)
        {
          PlaceHolder1.Controls.Add(new TextBox());
          
          
    
          
    
        }
      }
    }


    28 июля 2011 г. 14:20
  • А чем не подходит javascript решение?


    Для связи [mail]
    28 июля 2011 г. 14:47
    Модератор
  • Я не зря написал tb.Id, так как если вы захотите получить введенные данные, то вам необходимо иметь textbox'ы с разными id.

    Во-вторых, вам стоит почитать о жизненном цикле веб-страниц. Если кратко, то веб-страница после второго нажатия абсолютно ничего не знает о первом созданном контроле и если вы хотите генерировать несколько контролов, то вам необходимо делать это каждый раз для всех при загрузки страницы.

    28 июля 2011 г. 14:47