Неверно создан идентификатор строки в Gridview HTML - PullRequest
0 голосов
/ 19 декабря 2008

All

Когда мое представление сетки привязывается к своему источнику данных (устанавливается программно) и генерирует 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 в той же строке:

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

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

1 Ответ

1 голос
/ 28 января 2009

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

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

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

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