2016-12-08 2 views
0

У меня есть простая форма в asp.net, где я добавляю некоторые данные в базу данных, используя LINQ to SQL.Как получить входное значение динамически добавленных текстовых полей

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

Я хочу знать, как получить входные значения из этих динамически добавленных текстовых полей, чтобы я мог вводить эти данные в базу данных.

Смысл, что если пользователь вводит текстовое поле «Властелин колец», я хочу получить эти данные в коде и добавить его в базу данных.

Это легко получить на основной форме, где я просто сделать это как: inputValue.Text, но с разными идентификаторами я любопытное потерял ...

Мой код для динамического добавления текстовых

protected void Button1_Click(object sender, EventArgs e) 
    { 
     counter++; 
     TextBox tb1 = new TextBox(); 
     TextBox tb2 = new TextBox(); 
     TextBox tb3 = new TextBox(); 
     TextBox tb4 = new TextBox(); 
     tb1.ID = "inputAuthor" + counter; 
     tb2.ID = "inputBookName" + counter; 
     tb3.ID = "inputCategory" + counter; 

     LiteralControl lineBreak = new LiteralControl("<br/>"); 
     ph1.Controls.Add(tb1); 
     ph1.Controls.Add(lineBreak); 
     controlIdList.Add(tb1.ID); 
     ph1.Controls.Add(tb2); 
     ph1.Controls.Add(lineBreak); 
     controlIdList.Add(tb2.ID); 
     ph1.Controls.Add(tb3); 
     ph1.Controls.Add(lineBreak); 
     controlIdList.Add(tb3.ID); 
     ph1.Controls.Add(tb4); 
     ph1.Controls.Add(lineBreak); 
     controlIdList.Add(tb4.ID); 
     ViewState["controlIdList"] = controlIdList; 
    } 

ОБНОВЛЕНИЕ

динамически добавлены текстовые поля

<input name="dnn$ctr1365$Author$inputAuthor1" id="dnn_ctr1365_Author_inputAuthor1" type="text"> 
<input name="dnn$ctr1365$BookName$inputBookName1" id="dnn_ctr1365_BookName_inputBookName1" type="text"> 
<input name="dnn$ctr1365$Category$inputCategory1" id="dnn_ctr1365_Category_inputCategory1" type="text"> 

по умолчанию форма .aspx

<input name="dnn$ctr1365$Author$inputAuthor" id="dnn_ctr1365_Author_inputAuthor" class="form-control" style="background:#fff" type="text"> 
+0

предоставьте html, который отображается в браузере. – Bharat

+0

Вы имеете в виду это? (см. обновление).и oh btw, это модуль dnn, я создаю @Bharat – aiden87

+0

нормально, поэтому я думаю, что этот идентификатор является идентификатором клиента, и просто добавьте еще один тег в этот html, т. е. Runat = "server", или сделайте его текстовым полем asp: net – Bharat

ответ

0

Ваш поток должен быть, как показано ниже.

<asp:TextBox ID="dnn_ctr1365_Author_inputAuthor" name="dnn$ctr1365$Author$inputAuthor" class="form-control" style="background:#fff" runat="server"></asp:TextBox> 

И извлечение данных из бэкэнд.

string value = dnn_ctr1365_Author_inputAuthor.Text.toString(); 

что-то подобное поможет вам. Я не тестировал этот код, но просто расправляю его как поток.

проверьте эти ссылки, они помогут вам понять элементы управления веб-формой asp.net.

https://asp-net-example.blogspot.in/2008/10/textbox-example-how-to-use-textbox.html

+0

, но это будет получать только значение текстового поля по умолчанию, а не значение динамически добавленных текстовых полей с разными идентификаторами ... – aiden87

+0

нормально, теперь я понимаю вашу проблему, я думаю, что это не очень хороший способ привязать этот тип элементов управления , ваш код запускается, если вам удастся добавить код runat в ваш html. – Bharat

+0

никогда не было трудно получить значение текстового поля из кода ... трудно получить значения динамически созданных текстовых полей, потому что я не знаю, как прорезать их идентификатор – aiden87

0

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

Для этого. Во-первых, вы должны признать, что нет богатого пула eventHandler для вас .Net, как winform. Есть только событие TextChanged, и он вел себя как onBlur или mouseLeave.

Для достижения этой цели вашего динамический TextBox будет что-то вроде

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox tb1 = new TextBox(); 
    tb1.ID = "t1";  
    tb1.Attributes.Add("runat", "server"); 
    tb1.AutoPostBack = true; 
    addEvent(tb1,tb1.ID); 
    panel.Controls.Add(tb1); 
} 

private void addEvent(TextBox tb1,string id) 
{ 
    tb1.TextChanged += (senders, eventArgs) => 
    { 
     //do Something with the ID 
    };  
} 

главного заключается в том, чтобы установить AutoPostBack истину, так TextChanged, что t1 может быть пойманным на backended.

После этого t1_TextChanged будет активирован для каждой смены динамического текстового поля. Чтобы впоследствии вы могли играть с вашей базой данных.

+0

, что вы имеете в виду делать с идентификатором? можете ли вы отправить пример? – aiden87

+0

есть несколько проблем для хоста, 1: генерировать textBox динамически, 2: бэкэнд, способный уведомлять событие из текстового поля, // делать что-то с идентификатором. который является связью с базой данных и данными из бэкэнд, что не является частью этого вопроса, я думаю, – SKLTFZ

+0

с этим подходом, вы можете сгенерировать любое количество динамических текстовых полей и addEvent для каждого из них, и каждый из них может // делать что-то с идентификатором, и вы также можете получить текст внутри мероприятия, вы можете проверить http://stackoverflow.com/questions/14337057/how-to-get-the-new-text-in-textchanged. – SKLTFZ

Смежные вопросы