Идентификатор HTML-строки Gridview неправильно создан

Все,

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

<select name = "ctl00$ContentHolder$list$ctl03$EquipmentTypeList" id = "ctl00_ContentHolder_list_ctl03_EquipmentTypeList" style = "width:160px;">

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

<select name = "ctl00$ContentHolder$flbShipFrom$ddlAvailableOptions" onchange = "StoreSelection('ctl00_ContentHolder_flbShipFrom_ddlAvailableOptions'); setTimeout('__doPostBack(\'ctl00$ContentHolder$flbShipFrom$ddlAvailableOptions\',\'\')', 0)"  id = "ctl00_ContentHolder_flbShipFrom_ddlAvailableOptions" style = "width:283px;" />

т.е. идентификатор не содержит уникального номера строки. Это также происходит со стандартными элементами управления .NET в той же строке:

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

Полностью застрял ... любые предложения, пожалуйста

Если вы разместили свой код, это может помочь решить проблему.

Phaedrus 01.02.2009 21:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
879
1

Ответы 1

Убедитесь, что все, что вы используете для создания строк, реализует INamingContainer.

Что касается проблем с ViewState, это может быть признаком этого или может быть связано с тем, как вы генерируете строки. Опубликуйте код на стороне сервера, если контейнер именования не помогает.

Кроме того, старайтесь избегать прямого использования идентификатора на стороне клиента? В большинстве ситуаций вы можете обойтись использованием FindControl (на стороне сервера) или передачей результата ClientID в ваш Javascript (на стороне клиента), если вам действительно нужно выбрать точный элемент управления. Как правило, лучше не ссылаться на идентификаторы HTML напрямую, особенно из-за проблемы вложенного именования, которую вы уже обнаружили.

Другие вопросы по теме