2008-10-17 10 views
3

Quelle est la meilleure façon d'implémenter les contrôles utilisateur nécessitant des rappels AJAX?Utilisation des rappels AJAX avec les contrôles utilisateur ASP.NET

Je veux accomplir quelques choses:

  • ont des événements fait dans le navigateur (par exemple, glisser-déposer) déclencher une notification AJAX qui peut soulever un événement de contrôle, ce qui provoque code sur la page en utilisant la contrôle pour faire ce qu'il doit faire (par exemple, changer une valeur dans une base de données).
  • Avoir des mises à jour partielles (PAS utiliser un panneau de mise à jour) qui peuvent faire des choses comme remplir une liste déroulante auto-complète sous une zone de texte.
  • Mettre en oeuvre sur plusieurs pages
  • éviter d'avoir à mettre en œuvre la logique sur la page elle-même qui passe des événements retour au contrôle, parce que c'est répétitif et difficile à maintenir
un contrôle utilisateur unique qui est suffisamment générique pour être réutilisé

J'utilise jQuery pour la plupart des choses côté client, mais pour les appels AJAX réels je ne me soucie pas vraiment si c'est jQuery ou les bibliothèques ASP AJAX.

Effectivement ce qui serait parfait est PageMethods sur le contrôle de l'utilisateur, qui serait facilement appelable depuis le script côté client. Malheureusement, pour autant que je sache, pagemethods ne fonctionne pas sur les contrôles utilisateur.


Je vais utiliser un contrôle de saisie semi-automatique comme exemple:

je devrais être en mesure de mettre le contrôle de saisie semi-automatique sur la page, puis dans le code de la page, ont par exemple:

Public Sub HandleLookup(ByVal input As String, ByRef list As List(Of String) Handles MyControl.LookupEntries 
    list = New List(Of String) 
    ' Query database for list of items.. 
    For Each item as String in FullItemList 
    If item.StartsWith(input) then list.Add(item) 
    Next 
    Return list 
End Sub 

Et ne faites rien d'autre .. le reste du code devrait être dans le usercontrol. Remarque: les contrôles que j'essaie de faire sont beaucoup plus spécifiques que, par exemple, la saisie semi-automatique. Ils n'existent dans aucune bibliothèque tierce et j'ai vraiment besoin d'être capable de les faire moi-même.

Répondre

2

Examinez l'implémentation de ICallbackEventHandler dans votre page. C'est un moyen simple de rappeler une fonction de page à partir de JavaScript.

est ici un bon tutoriel:

http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=119

+0

Merci, ça me va eu. Ce n'est pas vraiment intuitif ou puissant (en réalité seulement un paramètre (chaîne)), ce qui signifie que j'ai dû écrire une petite bibliothèque pour encoder/décoder la chaîne et me laisser simuler plusieurs "fonctions". Mais cela fonctionne, et maintenant tout est autonome dans un seul contrôle – gregmac

+1

Note aux gens du futur: C'est possible, mais si vous envisagez cela, cela signifie probablement que vous devriez juste jeter les formulaires web et faire vos trucs sur le web sur votre propre, en utilisant MVC ou un cadre similaire. Je suis en train de réécrire l'application ci-dessus maintenant.Mon avis; Webforms essaie de prétendre que le web a un état, mais le web n'a pas d'état, et donc les webforms vont toujours vous causer des problèmes dès que vous faites autre chose que glisser-déposer dans l'interface utilisateur. – gregmac

Questions connexes