2013-01-16 5 views
1

J'ai une page principale (default.aspx) avec une zone de texte (TextBox1) et un bouton de lien (LinkButton1).asp.net + jquery ui dialog

Lorsque vous cliquez sur LinkButton1, une boîte de dialogue jquery s'ouvre avec le contenu chargé depuis la page popup.aspx (en utilisant la méthode de chargement).

Popup.aspx contient 3 boutons de liaison.

Lorsque vous cliquez sur l'un des boutons de liaison, je souhaite que le texte du lien soit renvoyé à default.aspx et inséré dans TextBox1.

Des solutions?

Source DEFAULT.ASPX:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script> 
<link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript"> 
    function OpenDialog() { 
     var $dialog = $('<div></div>').load('./Popup.aspx').dialog({ autoOpen: false, modal: true, title: "Please select value", close: function (ev, ui) { $(this).dialog('close'); } }); 
     $dialog.dialog("open"); 
    } 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
<div> 
    <asp:TextBox ID="TextBox1" runat="server" Enabled="False"></asp:TextBox> 
    <asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="OpenDialog(); return false;">Open selector</asp:LinkButton> 
</div> 
</form> 
</body> 
</html> 

Source POPUP.ASPX:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:LinkButton ID="LinkButton1" runat="server">Value 1</asp:LinkButton> 
    <asp:LinkButton ID="LinkButton2" runat="server">Value 2</asp:LinkButton> 
    <asp:LinkButton ID="LinkButton3" runat="server">Value 3</asp:LinkButton> 
</form> 
</body> 
</html> 

Répondre

0

L'astuce est ici pour obtenir les éléments de la fenêtre du haut, et cela se fait par en utilisant le window.top.document comme:

jQuery("#ElementID", window.top.document) 

et parce que vous ne pouvez pas savoir à partir de chaque page comment l'id est rendu à utiliser le mode statique ClientIDMode="Static" pour chaque commande de le garder comme vous l'écrivez par exemple:

<asp:TextBox ID="TextBox1" ClientIDMode="Static runat="server" Enabled="False"></asp:TextBox> 

Ainsi, par exemple à partir de la boîte de dialogue peut envoyer un texte à la fenêtre principale comme:

jQuery("#TextBox1", window.top.document).text(jQuery("#LinkButton1").text()); 
0
$(document).on('click', '[id^=LinkButton]', function(){ 
    $('#TextBox1').text($(this).text()); 
});