2013-03-08 5 views
1

У меня есть эта страница, где вы можете «редактировать» данные пользователей ... Я хочу отправить сообщение типа «Отредактировано успешно» и обновить а также новый контент (DropDownLists и текстовые поля).Как отправить предупреждение и обновить страницу после обновления базы данных

Я использую это для сообщений:

ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "alert('Edited Successfully !');", true);

и обновить страницу, я попробовал: Response.Redirect(Request.RawURl) и даже простой Response.Redirect(~/page.aspx) не работало либо ...

Если я пытаюсь таким образом, он обновляет страницу, но затем он НЕ отображает предупреждение ...; \ Все эти данные (которые заполняют DropDownLists, текстовые поля и т. д.) вызывается в Page_Load. Я попытался вызвать этот же метод после отправки сообщения, но затем он не обновляется = \

Любая идея?

+0

вы можете использовать JQuery предупредительные сообщения http://akquinet.github.com/jquery-toastmessage-plugin/demo/demo.html –

+0

@SizS Я еще ничего не знаю о Javascript, думаю, что jquery будет более сложным: что вы думаете? – Ghaleon

+0

какой инструмент вы используете для обновления данных, например. FormView –

ответ

1

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

подход я использовал в подобных случаях, предполагает использование jQuery и jQuery UI Диалог:

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

<div id="modal" title="Alert" style="display: none;"> 
</div> 

Написать яваскрипт функции, которая будет отображать диалоговое окно:

function showConfirmation(text){ 
    $("#modal").html(text).dialog({ 
      modal: true, // show the dialog as modal 
      buttons: { 
       Ok: function() { 
        location.reload(); 
       } 
      }, // add a button that refreshes the page when clicked 
      closeOnEscape: false, // avoid the dialog close when ESC is pressed 
      dialogClass: 'no-close' // adds a CSS class that hides the default close button 
    }); 
} 

dialog функция отвечает за показ диалога, с помощью JQuery Библиотека пользовательского интерфейса. Параметр buttons отображает кнопку, которая обновляет страницу при нажатии.

Все, что вам нужно сделать, это зарегистрировать диалоговый скрипт, с RegisterStartupScript методом:

ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "showConfirmation('Edited Successfully !');", true); 

Если вы не используете JQuery и/или JQuery UI, все, что вам нужно сделать, это добавить ссылки в голове тег. Если вы не хотите использовать CDN, загрузите файлы на свой локальный сайт.

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script> 
    <script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
    <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css"> 

Вы можете увидеть рабочий пример поведения на стороне клиента this fiddle

+1

+1 для хорошего объяснения –

+0

Я начинаю изучать JQuery. Я просто не понял одну вещь, в чем разница между вашим «RegisterStartupScript» и моим? Почему именно это будет показывать что-то другое? – Ghaleon

+1

Потому что в вашем коде вы вызываете «предупреждение» по умолчанию в браузере, в котором просто отображается сообщение (нет обратного вызова к его кнопке). В моем коде отображается настраиваемый диалог, созданный с помощью HTML, который позволяет вам называть любую функцию Javascript при нажатии кнопки. В этом я добавил код для обновления страницы с помощью Javascript, но вы можете вызвать обратную передачу на сервер с той же кнопкой и перезагрузить страницу в 'Page_Load', используя' Response.Redirect'. (Обратите внимание на третий параметр 'RegisterStartupScript', в моем примере вызывается' showConfirmation() 'вместо' alert() '). – MarcusVinicius

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