2009-02-09 2 views
0

Я пишу веб-приложение ASP.NET 3.5, которое отображает список элементов. Я хочу иметь возможность отображать немодальное всплывающее окно с подробностями, когда пользователь выбирает элемент. Я хочу иметь возможность отображать несколько подробных всплывающих окон одновременно. (т. е. пользователь может щелкнуть элемент, чтобы просмотреть его данные, а затем щелкнуть другой элемент, чтобы получить другое всплывающее окно.) В настоящее время я вызываю RegisterStartupScript во время обратной передачи, чтобы написать сценарий «window.open (...)» на странице, -renders. Проблема, конечно, в том, что для этого требуется полная обратная передача и обновление страницы.Использование XMLHttpRequest для отображения всплывающего окна

Мне показалось, что это может быть идеальное использование для XMLHttpRequest или AJAX, но я не знаю, как это сделать (или это даже возможно или умно сделать это). Может ли кто-нибудь показать мне дорогу?

У меня есть расширения AJAX, но я бы предпочел не использовать AJAX Control Toolkit.


EDIT: Некоторые уточнения: Когда пользователь выбирает элемент пользовательского события поднят. На сервере я обрабатываю это событие и использую некоторую серверную логику для создания URL-адреса, который затем я использую с RegisterStartupScript для создания сценария «window.open (myUrl ...)». Но публикация всей страницы для этого кажется неэффективной, и я хотел бы знать, могу ли я просто позвонить на простую серверную функцию, которая строит URL-адрес и отправит его обратно, не обойдя всю страницу.

ответ

1

Создание всплывающего окна имеет очень мало общего с AJAX и намного больше связано с JavaScript. См. Здесь диалоговую библиотеку jQuery. Вы можете использовать AJAX API JQuery, чтобы сделать ваш сервер грязную работу :)

jQuery Dialog UI

-

Билл Konrad
Devtacular - Web Development Tutorials

+0

сиг и реклама нужно идти, но это хороший ответ – annakata

+0

Создание всплывающего окна не проблема. Я хотел бы знать, могу ли я обработать выбор пользователя на сервере, а затем создать всплывающее окно на клиенте без округления всей страницы. – Sisiutl

0

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


Edit:

Я не думаю, что было бы ограничить количество всплывающих окон, есть некоторые интересные вещи, которые можно сделать в эти дни с библиотеками, как JQuery + JQuery UI, вы можете просто создать, как многие из этих DIV/слоев по мере необходимости и делают их подвижными, изменяемыми по размеру и т. д. Единственное, что есть в реальных всплывающих окнах, и это не так, что они не отображаются на панели вкладок/панели задач.

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

Внедрение стандартного всплывающего окна oldschool, несомненно, намного проще для вас, но оно также сталкивается с проблемами с блокировщиками всплывающих окон конечных пользователей. Просто у меня была проблема @ моей работы, по какой-то причине им нужно было всплывать во время процесса аутентификации сертификатов, и как только Yahoo выпустил новую версию своей панели инструментов, она перестала работать).

+0

Не будет ли это ограничивать меня только одним всплывающим окном, и ограничивать всплывающее положение в пределах границ главной страницы? – Sisiutl

0

Вы можете использовать DHTML Window widget. Он предлагает много способов отображения модального или не модального окна. Также он поддерживает AJAX.

Вы можете использовать dhtmlwindow для открытия нового окна, или dhtmlmodal, чтобы открыть новое модальное окно.

Конечно, вы можете отредактировать его в соответствии с вашими требованиями. Пример:

var insWindow = dhtmlmodal.open("insbox", "iframe","UserMaster.aspx?" + queryStr, "User Master", "width=425px,height=500,center=1,resize=0,scrolling=1", "recal"); 
Смежные вопросы