Диалоговое окно подтверждения пользовательского интерфейса jQuery и обратная передача asp.net

У меня есть кнопка удаления в gridview. Для тех, кто не знаком с asp.net, моя кнопка удаления выводит так:

<a id="ctl00_cp1_dtgrAllRates_ctl02_lbDelete" 
   class="lb"
   href="javascript:__doPostBack('ctl00$cp1$dtgrAllRates$ctl02$lbDelete','')">
Delete</a>

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

var theID = $(this).attr("href");

и огонь это. Есть ли способ передать href val в качестве параметра коду диалога или что-то в этом роде, чтобы раздел «Подтвердить удаление» использовал его при нажатии кнопки, а при нажатии «Отмена» диалоговое окно просто закрывалось?

Вот мой код jQuery:

$(document).ready(function(){
    $("#dialog").dialog({
      bgiframe: true,
      autoOpen: false,
      width: 400,
      height: 200,
      modal: true,
      buttons: {
                'Confirm Delete': function() {
                    $(this).dialog('close');
                    //fire href here preferably
                    },
                Cancel: function(){
                    $(this).dialog('close');
                    }
            }
    });

    $(".lb").click(function(event){
        $("#dialog").dialog('open');
        event.preventDefault();
    });

});

ТИА

Ллойд


person lloydphillips    schedule 18.11.2009    source источник


Ответы (3)


Ок, удалось решить. Я наткнулся на этот пост, который немного помог:

Как реализовать диалоговое окно подтверждения в диалоговом окне пользовательского интерфейса Jquery?

Однако пример, представленный в сообщении, не совсем работал просто потому, что создание диалогового окна было неправильным в обработчике кликов. Существует другой способ установки свойств/параметров в диалоговом окне после того, как диалоговое окно уже создано. Итак, мой окончательный код был:

$(document).ready(function(){

$("#dialog").dialog({
  modal: true,
        bgiframe: true,
        width: 500,
        height: 200,
  autoOpen: false
  });


$(".lb").click(function(e) {
    e.preventDefault();
    var theHREF = $(this).attr("href");


    $("#dialog").dialog('option', 'buttons', {
            "Confirm" : function() {
                window.location.href = theHREF;
                },
            "Cancel" : function() {
                $(this).dialog("close");
                }
            });

    $("#dialog").dialog("open");

});

});

Надеюсь, это поможет кому-то другому. Гурдас, спасибо за вашу помощь, это определенно запустило механизм. :)

person lloydphillips    schedule 18.11.2009

Вероятно, есть более чистый способ сделать это, но я думаю, вам нужно будет получить контекст ссылки, по которой вы щелкаете, чтобы использовать ее href при построении диалога; а затем открыть диалоговое окно даже после того, как оно было построено с этим параметром; Я собираюсь еще немного подумать о более эффективном методе, но, надеюсь, это заставит несколько шестерен провернуться...

 $(".lb").click(function(event){    

      var theHREF = $(this).attr("href");



       $("#dialog").dialog({
      bgiframe: true,
      autoOpen: false,
      width: 400,
      height: 200,
      modal: true,
      buttons: {
                'Confirm Delete': function() {

                    //href fired here
                    window.location.href= theHREF; 

                    },
                Cancel: function(){
                    $(this).dialog('close');
                    }
            }    

    }).dialog('open');
person gn22    schedule 18.11.2009
comment
Привет, Гурдас. Ценю этот ответ. Я вставил ваш код, и он вообще не работает. Div отображается при загрузке страницы, а диалоговое окно даже не запускается. :s Надеюсь, вам удалось подумать еще немного. У меня голова чешется в минуту. :) - person lloydphillips; 18.11.2009

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

person tanathos    schedule 25.04.2011
comment
Пожалуйста, не пытайтесь продавать товары через это сообщество. Если можно, постарайтесь ответить. - person Ravimallya; 28.06.2013