jquery对话框调用带按钮参数的服务器端方法

问题描述:

我有一个gridview控件,并为网格的每一行删除了asp:ImageButton。我想要的是当用户点击删除按钮时,弹出一个jquery对话框,询问他们是否确定要删除它。
到目前为止,我的对话框出现的很好,我得到了该对话框上的按钮,并且我可以使按钮调用服务器端方法,但它使对话框知道用户选择的行的ID,然后传递该对话框到服务器端的代码。

页面行中的按钮目前只是一个ID为'dialog_link'的'a'标签。在页面上了jQuery看起来是这样的:jquery对话框调用带按钮参数的服务器端方法

$("button").button(); 
    $("#DeleteButton").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "ManageUsers.aspx/DeleteUser", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 

       // Replace the div's content with the page method's return. 
       $("#DeleteButton").text(msg.d); 
      } 
     }); 
    }); 

    // Dialog   
    $('#dialog').dialog({ 
     autoOpen: false, 
     width: 400, 
     modal: true, 
     bgiframe: true 

    }); 

    // Dialog Link 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog('open'); 
     return false; 
    }); 


对话框本身只是一套“DIV”的标签。 我想到了很多不同的方法来做到这一点(参数传递,会话变量等),但无法弄清楚如何让它们中的任何一个工作。 任何想法是最受欢迎的

一如既往,在此先感谢那些贡献者。

我最近做了一些完全相同的工作 - 删除项目的确认。我通过使用Data http://docs.jquery.com/Data方法来存储我想传递的值来解决此问题。

因此,例如,我的删除链接有以下几点:

<a href="#" class="delete" id="1">Delete</a> 

然后监控类“删除”,出现这种情况时设置对话框中的数据的所有点击:

$("#dialog").data("id", $(this).attr("id")); 

哪将在您进入对话框时可以访问。

$("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      'Delete': function() { 
       alert($(this).data('id')); 
       $(this).dialog('close'); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 

希望这会有所帮助,如果不明确,大声呼喊。

+0

感谢您的快速回复Alistair,我现在非常接近,我想我现在需要的是能够将参数传递给服务器端方法。在我的AJAX方法中,我使用它来注册方法url:“ManageUsers.aspx/DeleteUser”。我试图分裂字符串尝试并将其中的参数“ManageUsers.aspx/DeleteUser(”+ $(this).data('id')+“)”但唉,无济于事。关于如何实现最后一块难题的任何想法? – Chiefy 2010-05-27 22:38:31

+0

'$ .ajax({data:$(this).data('id'),complete:/ * so on on//});' – Gutzofter 2010-05-28 01:38:14

+0

Thanks Gutzofter。好吧,在阅读了更多关于这个之后,我看到参数作为查询字符串传回。由于服务器端方法是静态的,我如何访问查询字符串对象? – Chiefy 2010-05-28 09:08:40