Appeler du code behind depuis un événement javascript :
Bonjour,
Voici mon problème :
Je dispose d'une liste déroulante de localités. J'aimerais rendre cette liste éditable afin que la liste se mette à jour à chaque fois que le client entre une lettre.
J'ai tout d'abord chercher s'il existait la possibilité de rendre une dropdownlist ou une listBox editable mais apparemment ce n'est pas possible.
J'ai ensuite regarder s'il existait un autre composant le permettant, apparemment, il n'y en a pas.
Il n'y a pas non plus un événement "onkeypress" applicable sur les composant .net.
J'ai donc créé au-dessus de ma liste une input standard html avec l'événement "onkeypress" qui invoque une fonction javascript qui elle-même pourrait appeler la méthode adéquate du code behind de la page aspx. Et c'est la que ça se complique. Je ne parviens pas à appeler du code behind depuis cette fonction javascript. J'ai pourtant trouvé quelques éléments sur http://www.developpez.net/forums/sho...d.php?t=379769. Mais ce n'est pas exactement le même problème. Voici un résumé de la situation :
J'ai ajouté l'extension ajax pour .net et incorporé le contrôle suivant dans ma page :
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods=true EnablePartialRendering=true runat="server">
</asp:ScriptManager>
Voici mon javascript :
<script language="javascript" type="text/javascript">
function test(){
PageMethods.updateListLoc();
}
</script>
Et voici ma méthode behind :
public void updateListLoc()
{
inputLieu_Changed();
}
Je sais, cette méthode devrait être static. Mais dans ce cas, je ne peut pas faire appel à ma méthode "inputLieu_Changed()" et bien entendu je ne peux pas récupérer l'objet associé au contrôle de la liste déroulante (Car il n'est pas static). Mais ce n'est pas le coeur du problème car cette méthode n'est tout simplement pas appelée.
En fait une erreur javascript se déclenche en m'indiquant que "PageMethods" n'est pas reconnu. J'ai également vu que la méthode static du code behind ne doit pas être dans le code behind de la page master (Je vois vraiment pas pourquoi) mais dans ce cas, je ne dispose de plus aucune instance des objets de ma page.
Voilà. J'attend donc toutes propositions afin de parvenir à mes fins. Que ce soit des modifications de cette solution ou des autres solutions.
Oui c'est bien cela que je cherche mais...
Bonjour,
Alors oui c'est exactement le contrôle qu'il me faut et je vous remercie pour votre réponse. Cependant j'ai un autre souci. Quand j'intègre ce contrôle dans ma page, le compilateur ne reconnait pas la balise <ajaxToolkit:AutoCompleteExtender>.
Ce qui est dans un sens logique vu qu'il n'y a aucune définition de ce tag en haut de ma page.
Pour utiliser ce genre de contrôle, .net 2.0 avec ajax toolkit est suffisant ?
Ou faut-il que je me procure .net 3.5 avec le ajax toolkit associé ?
Ok mais le problème n'est toujours pas résolu :
Merci pour ta réponse.
J'ai été sur le lien et j'ai mis à jour mon web.config. J'ai aussi essayé de créer un nouveau site en spécifiant l'utilisation d'AJAX. Mais rien à faire, il ne reconnait pas le contrôle <ajaxToolkit:...>. Si cette librairie existe alors il manque un tag au sommet de la page. Ce tag devrait normalement apparaitre automatiquement lors de la création de la page.
Depuis que j'ai mis le toolkit il a ajouter cette ligne au sommet de la page :
Code:
1 2
| <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %> |
Donc je devrais pouvoir atteindre mes contrôle ajax via le contrôle <asp:AutoCompleteExtender...>. Mais dans ce cas, c'est le "AutoCompleteExtender" qu'il ne parvient pas à trouver. Normalement pour utiliser le contrôle <ajaxToolkit:...> il devrait y avoir une balise <%@ ... TagPrefix="ajaxToolkit">.
Donc aurais-tu un autre tour dans ton sac ?
Toujours le problème mais on avance...
Question pas bête du tout, il n'y avait en effet pas de référence dll vers le toolkit. Je les aies donc ajoutées mais le problème persiste. Il reste peut-être à mettre une ligne dans la page aspx pour utiliser cette référence ?