2011-01-29 3 views
0

У меня есть элемент управления пользователя через всплывающее окно SimpleModal (JQuery), этот пользовательский элемент управления получает некоторые данные из базы данных и отображает их (подробности записи).Как сделать содержимое всплывающего окна PostBack только тогда, когда оно появилось

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

Интересно, могу ли я заставить его получать свои данные, только если всплывающее окно появилось.

Я пытался поставить его внутрь Panel с false для Visible собственности и изменить его на true при открытии всплывающего окна, но это стил называют Page_Load, который получает данные из базы данных!

Любая идея !!

ответ

1

Пожар ajax-запрос, когда пользователь активирует всплывающее окно и заполняет всплывающие окна со значениями, полученными из запроса.

2

Существует несколько подходов к его решению.

1.До всего на стороне сервера. Вы можете использовать вспомогательный инструментарий ajax (бывший атлас). Поместите его на панель обновления. Создайте триггер и укажите событие в этом триггере - это будет, когда вы сделаете вызов в db. Это произойдет только один раз, и вы будете контролировать, когда именно вы хотите это сделать.

2. Используйте аякс на стороне клиента. Я пользуюсь этим способом, так как существует много накладных расходов, связанных с использованием UpdatePanel (производительность). Поддерживайте JAQuery UI Modal Dialog тактично, используйте событие на стороне клиента, чтобы подключиться к нему, когда он открыт. Тогда вам придется либо сделать .ajax вызов на веб-сервиса (может быть размещен внутри страницы ASPX), или вы можете сделать .get:

$.ajax({ 
     url: url, 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 

или

$.get('ajax/MyDbRecord.aspx', function(data) { 
     $('.result').html(data); 
     alert('Load was performed.'); 
    }); 

Тогда страницу ASPX может просто:

Response.Write (MyRepository.GetDetail (q => q.ID == 1234) .ToString()); Resonse.End();

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

Оба API, описанные здесь подробно: http://api.jquery.com/jQuery.get/

Теперь, если вы действительно хотите сделать что-то на заказ с записью деталь вы извлекаете из БД, вы можете посмотреть в использовании getJSON. Другие примеры здесь:

http://viralpatel.net/blogs/2009/04/jquery-ajax-tutorial-example-ajax-jquery-development.html

Смежные вопросы