Как извлечь данные из динамически добавленных текстовых полей? - PullRequest
1 голос
/ 24 октября 2008

Я добавляю текстовые поля (не фиксированное количество текстовых полей) динамически в форму на странице ASP.NET, как я могу прочитать данные из этих текстовых полей?

Ответы [ 8 ]

3 голосов
/ 24 октября 2008

Предполагая, что вы хотите получить доступ к элементам управления на обратной передаче, вы, вероятно, воссоздаете динамические элементы управления в точности так, как они были созданы при первоначальной загрузке, а затем используйте метод FindControls страницы для поиска элементов управления. Вероятно, это поможет создать текстовые поля с такими идентификаторами, как Textbox1, Textbox2 и т. Д.

1 голос
/ 24 октября 2008

Из всех приложений ASP.NET, с которыми я работал, .NET любит использовать следующий алгоритм при создании идентификатора для серверных элементов управления:

ctl00$cphBody$[ControlID]

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

1 голос
/ 24 октября 2008

Когда вы добавляете их, вы должны давать им имена / идентификаторы, и вы можете использовать их для ссылки на них.

Если нет, перейдите в DOM в javascript, чтобы найти их внутри формы, которую вы создали - они будут в том же порядке, в котором вы их вставили.

Наконец, все они доступны как пост / получение входных данных для вашей страницы, так что вы сможете просматривать их все, пока вы присваиваете им разные имена.

-Adam

1 голос
/ 24 октября 2008

Посмотрите на Request.Params и извлеките их оттуда. Вы, конечно, должны будете дать им идентификаторы, чтобы иметь возможность различать их.

0 голосов
/ 24 октября 2008

Помните, что в ASP.Net каждый постбэк - это новый экземпляр вашего класса. Если вы создали эти элементы управления во время предыдущей обратной передачи или при первом просмотре, они были собраны с остальной частью этого предыдущего экземпляра. Таким образом, чтобы использовать элементы управления в этом новом экземпляре, вам нужно создать их снова. Если вам требуется информация о состоянии, загруженная для этих элементов управления (включая любое значение, введенное пользователем), вам также необходимо создать до состояния просмотра, то есть вы делаете это во время события Init, а не при загрузке событие.

0 голосов
/ 24 октября 2008

Вы можете использовать FindControl и передать идентификатор текстового поля, чтобы получить экземпляр текстового поля при обратной публикации. Свойство Text содержит данные, учитывая, что мы находимся на стадии загрузки страницы или позже в цикле. При добавлении динамических элементов управления переопределите метод CreateChildControls и добавьте динамические элементы управления в иерархию элементов управления на этом этапе цикла.

0 голосов
/ 24 октября 2008

Для создания динамических элементов управления я обычно использую элемент управления ASP.NET PlaceHolder и добавляю динамические элементы управления в этот контейнер.

Я бы дал каждому динамическому элементу управления идентификатор.

Затем вы можете использовать FindControl в PlaceHolder для доступа к динамическим элементам управления.

Я говорю «динамические элементы управления» для обозначения элементов управления, добавляемых вами во время выполнения

0 голосов
/ 24 октября 2008

При динамическом создании текстовых полей (предположительно с использованием JavaScript, но то же самое относится и к элементам управления ASP.NET) присваивайте им имена в определенном порядке. Тот, который вы сможете узнать позже.

На стороне сервера, в любом обработчике событий, происходящем после Page_Init, вы можете перебирать Request.Form collection.

Не поддавайтесь искушению использовать Request.Param, поскольку его можно использовать для применения к вашему приложению подделки межсайтовых запросов (злоумышленник может заманить пользователя в выдачу запроса GET, который ваше приложение будет интерпретировать так же, как и POST один, который, как правило, не очень хорошая вещь).

Если вы добавляете динамические элементы управления ASP.NET (например, в Page_Render), вы также можете реконструировать элементы управления и использовать их свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...