namingContainer ID с динамическим просмотром сетки - PullRequest
1 голос
/ 27 июня 2011

Это не будет очень четким объяснением моей проблемы, но я не знаю, как объяснить это лучше.

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

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

при первом создании вида сетки уникальные идентификаторы строк выглядят так: ctl03, ctl04, ctl05, ctl06 (таким образом, идентификаторы текстового поля: ctl03 $ txt0 и т. д.)

Когда я нажимаю кнопку в первый раз, строки UniqueID остаются прежними, так что я могу найти элементы управления методом FindControl (ID) или с помощью Request.Form [txt.UniqueID]

Тем не менее; после первого раза, когда я нажимаю кнопку, создаются ClientId строки следующим образом: ctl02, ctl03, ctl04, ctl05 .. Так что я не могу найти текстовые поля и не могу поймать текст, написанный на них.

Когда я смотрю на отрендеренный HTML-код, я вижу, что rowClientID все те же, что и у первых созданных (ctl03, ctl04, ctl05, ctl06)

Кто-нибудь имеет представление о том, почему rowIDs (имена контейнеров имен) меняются после первого обновления?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 июня 2011

Одним из решений является создание ваших текстовых полей со статическими идентификаторами и не позволяйте им динамически создавать asp.net.Это может быть сделано, если вы используете asp.net ver 4.

Другое решение - просто отобразить простое <input name="KnowName01" id="KnowId01" type="text" value="your value here" maxlength="100" etc... >

, а затем при отправке назад вы просто фиксируете возврат старым способом.и получите значение.

Request.Form["KnowName01"]

В конце TextBox является не чем иным, как рендерингом ввода , плюс некоторые проверки того, что на нем написано, включая Anti-XSS safe.

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