Как получить значения из динамически генерируемых текстовых полей?

0

Я пытаюсь получить значения текстового поля, которые я динамически генерировал при загрузке страницы и клонировал их с помощью jquery....

каждое текстовое поле имеет уникальный идентификатор в виде матрицы, например, текстовые поля строки 1 имеют идентификаторы textbox11, textbox12, textbox13, textbox14 и т.д. для строки 2 textbox21, textbox22, textbox23........

есть ли способ получить значения.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class product_entry : System.Web.UI.Page
{
    int count;
    protected void Page_Load(object sender, EventArgs e)
    {
        int i, j;
        for (i = 0; i < 1; i++)
        {
            TableRow tr = new TableRow();
            tr.Attributes.Add("class", "tabrow");

            for (j = 0; j <= 8; j++)
            {
                TableCell tc = new TableCell();

                if (j == 0)
                {
                    tc.Controls.Add(new LiteralControl("<Button class=remove type=button>-</button>"));
                }
                if (j == 1)
                {
                    tc.Attributes.Add("class", "sno");
                }
                if (j == 2 || j == 3 || j == 4 || j == 5 || j == 6 || j == 7 || j == 8)
                {
                    TextBox tb = new TextBox();
                    tb.Style["width"] = "98%";
                    tc.Controls.Add(tb);
                }
                tr.Controls.Add(tc);
            }
            Table1.Controls.Add(tr);
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Label2.Text = TextBox1.Text;
    for (int i = 1; i <= count; i++)
    {
        for (int j = 1; j <= 7; j++)
        {
            TextBox aa = (TextBox)Pnl.FindControl("textbox" + i + j);
            Response.Write(aa.Text);
        }
    }
    }
}

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

  • 0
    Назначьте уникальный ID каждому TextBox , затем используйте ((TextBox)this.FindControl(someIDToLookFor)).Text в своем коде C # для получения его значения.
  • 0
    я не хочу получать значение в jquery я хочу его в C # или коде, чтобы я мог отправить их в базу данных
Показать ещё 7 комментариев
Теги:

5 ответов

1
Лучший ответ

вы можете добавить конкретный класс css ко всем динамически сгенерированным текстовым полям при загрузке страницы и селектором классов с помощью JQuery вы можете получить доступ ко всем из них:

Используйте каждый: i - это позиция в массиве, obj - объект DOM, который вы выполняете итерации (к нему можно обращаться также с помощью оболочки jQuery $(this)).

$('input.SomeClass').each(function(i,obj){

var textboxid = $(this).id;
var textboxValue = $(this).val(); // get text inside text box

});
  • 0
    но как получить эти значения в C #, чтобы они могли быть введены в базу данных
  • 0
    Упростите, как вы делаете в C #
Показать ещё 2 комментария
0

Убедитесь, что ваш код на С#, который изначально создает текстовые поля, и ваш jQuery, который дублирует теги, назначает уникальное имя для каждого тега. Итак, у вас есть такие теги:

<input name="textbox1" ... />
<input name="textbox2" ... />
<input name="textbox99" ... />

После того, как вы отправили форму через postback или Ajax, вы можете использовать коллекцию Request.Form для доступа к значениям текстовых полей:

foreach (string key in Request.Form.Keys)
{
     if(key.StartsWith("textbox"))
     {
         string currentValue = Request.Form[key];
     }
}

Если вы отправляете форму с помощью GET, вам нужно получить доступ к Request.QueryString

  • 0
    да, первое, что вы сказали, уже выполнено (все теги имеют уникальный идентификатор). но могу ли я установить request.form [key] как текст lbel
  • 0
    метод, который вы объяснили, не работает
Показать ещё 1 комментарий
0

Чтобы получить ценность, которую вы используете

$('#theExactId').val()
  • 0
    я не хочу получать значение в jquery я хочу его в C # или коде, чтобы я мог отправить их в базу данных
0

Линейка ASP.NET не добавляет разметки на страницу. Поэтому вы должны обернуть свой контент в какой-то контейнер, чтобы вы могли его отредактировать с помощью JavaScript:

ou также следует рассмотреть возможность реорганизации всех "жестких" ссылок на контрольные идентификаторы из вашего кода JavaScript. В ASP.NET существует концепция именования контейнеров, которые будут обеспечивать уникальные идентификаторы на всей странице. Поэтому, если у вас есть элемент управления, называемый

 txtName 

в разделе "Содержимое" настоящее имя клиента (как видно из JavaScript) будет, например,

 ct00_txtName 

при использовании мастер-страниц. Префикс автоматически добавляется контейнером именования, чтобы сделать идентификатор уникальным.

К счастью, у каждого элемента управления есть свойство (серверная сторона), называемое ClientID, которое покажет фактический идентификатор, доступный на клиенте. Поэтому, если вам нужно получить доступ к элементу управления с клиентской стороны, убедитесь, что вы всегда используете свойство ClientID для получения имени. Как это:

var name = document.getElementById('<% =txtName.ClientID %>');
  • 0
    я не хочу получать значение в jquery или javascript, я хочу его в c # или коде, чтобы я мог отправить их в базу данных. Есть ли способ сделать это
0

Если элемент имеет уникальный идентификатор, вы можете запросить этот элемент, используя формат селектора

$('#theExactId').val()

В HTML 4.01 идентификаторы не могут начинаться с числа. Если ваши идентификаторы действительно 11, 12 и т.д., Вам может понадобиться/нужно добавить хотя бы один альфа-символ.

Если вы пытались получить данные на стороне сервера, переменные были бы частью HTTP POST.

  • 0
    хорошо, я сделал это textbox11, textbox12 .... что дальше?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню