UpdatePanel в репитере перезаписывает элементы управления под ним - PullRequest
0 голосов
/ 17 апреля 2009

У меня есть повторитель с панелью обновления ASP.NET AJAX 1.0 внутри. Есть кнопки за пределами UpdatePanel, но все еще в повторителе. Когда появляется раздел внутри UpdatePanel (это скрытый элемент управления Panel, который появляется, когда пользователь отвечает на вопрос определенным образом), кнопки внизу исчезают.

Вот иллюстрация.

[REPEATER]
  [UPDATEPANEL]
     [QUESTION]   <-- when user says yes, Panel appears
     [PANEL]
  [/UPDATEPANEL]
  [TABLE]         <-- This table is no longer visible.
     [Button]
  [/TABLE]
[/REPEATER]

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

Есть идеи, как мне это исправить?

Edit: у меня был ошибочный отсутствующий закрывающий тег, который заставил UpdatePanel расширяться дальше, чем следовало, поэтому он скрывал мой контроль. Использование плагинов Firefox помогло определить это.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2009

Я предлагаю использовать Firefox и панель инструментов веб-разработчика для просмотра созданного источника после обновления или проверки элементов с помощью Firebug. Если html таблицы все еще находится на странице, то это может быть либо проблема стиля, либо проблема с искаженным HTML на панели, из-за которой таблица не отображается должным образом. Если html таблицы отсутствует, то она удаляется из DOM (или перезаписывается) обратным вызовом AJAX. Возможно, вы сможете использовать Firebug для отладки фактического обратного вызова AJAX, чтобы увидеть, что и когда на самом деле заменяется.

Публикация сгенерированного HTML до и после обновления в вашем вопросе также будет полезна, если вы все еще не можете разобраться и хотите больше информации.

0 голосов
/ 17 апреля 2009

Обратите внимание, что атрибут Clear равен По состоянию на HTML 4.01 устарел, а не включен в XHTML Strict - какой тип документа вы используете - если вы используете и вы явно используете XHTML, потому что вы закрыли свой br), тогда ваш браузер имеет полное право игнорировать атрибут clear.

Вам бы лучше сделать это с помощью CSS:

<style type="text/css">
  .cleaner{
    clear: both;
  }
</style>

<br class="cleaner" />

Кроме того, вы можете попробовать поместить br после панели, чтобы он возвращался в UpdatePanel и заставлял браузер соблюдать его.

0 голосов
/ 17 апреля 2009

Поместите таблицу в панель обновления или поместите весь ретранслятор в одну панель обновления.

...