Veuillez consulter le texte original de Leon.Zhou : http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html
J'ai téléchargé l'exemple de code et l'ai converti en VB. Le test de la fonction AJAX a réussi. Mais j'ai rencontré quelques petits problèmes :
La démo1 est normale.
Demo2 n'a pas réussi à tester la ligne 22 dans AJAX.aspx.vb selon la méthode d'écriture originale de Leon. J'ai donc directement modifié la propriété OnClientClick de bouton3 dans l'environnement IDE, voir Ligne 52 de testAJAX.asp. Test réussi.
Demo3 n'a pas réussi à ajouter des attributs client selon la méthode d'origine et la ligne 20 de testAJAX.aspx.vb n'a pas fonctionné. Je ne sais pas pourquoi. J'ai donc seulement ajouté un bouton3 pour déclencher l'événement client.
Il s'agit d'un bon exemple qui mérite d'être étudié. Pour une explication détaillée du principe, veuillez consulter le texte original de l'auteur. Lors des tests, veuillez ajouter <add name="NorthWind" connectionString="...corresponding database connection string..."> dans le web.config de votre projet
testAJAX.aspx
1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="testAJAX.aspx.vb" Inherits="testAJAX" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
4
5<html xmlns=" http://www.w3.org/1999/xhtml " >
6<head id="Head1" runat="server">
7 <title>Soumission de pages ASP.NET 2.0 sans démonstration d'actualisation</title>
8 <script type="text/javascript" langage ="javascript">
9 Fonction CallServer1() fonction CallServer1 (contrôle d'entrée, contexte)
10 {
11 context.innerHTML = "<IMG SRC='images/pie.gif' />Chargement";
12 arguments = 'ServerMethod1|' + inputcontrol.value ;
13 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData1", "context")%>;
14}
15
16 Fonction RecevoirServerData1()fonction RecevoirServerData1(résultat, contexte)
17 {
18 contexte.innerHTML = contexte.id + ":" + résultat ;
19}
20
21 Fonction CallServer2() fonction CallServer2(obj)
vingt-deux {
23 contexte = étendue de la grille ;
24 context.innerHTML = "<IMG SRC='images/pie.gif' />Les données sont en cours de chargement";
25 arguments = "ServerMethod2|" + obj.value ;
26 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData2", "context")%>;
27}
28
29 Fonction RecevoirServerData2()fonction RecevoirServerData2(résultat, contexte)
30 {
31 contexte.innerHTML = résultat ;
32}
33
34 </script>
35
36<corps>
37 <form id="form1" runat="serveur">
38 <div>
39 <h1>Démo1 : le bouton HTML soumet les données</h1><br />
40 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
41 <input id="Button1" type="button" value="Soumettre à Label1" onclick="CallServer1(TextBox1, Label1)"/>
42 <input id="Button2" type="button" value="Soumettre à Label2" onclick="CallServer1(TextBox1, Label2)"/>
43 <br />
44 <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>
45 <br />
46 <asp:Label ID="Label2" runat="server" Text="Label2:"></asp:Label>
47 </div>
48 <heure />
49 <div>
50 <h1>Démo2 : le bouton du serveur soumet les données</h1><br />
51 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
52 <asp:Button ID="Button3" runat="server" Text="Button" OnClientClick="CallServer1(TextBox2, Label3);return false;" /><br />
53 <asp:Label ID="Label3" runat="server" Text="Label3:"></asp:Label></div>
54 <heure />
55 <div>
56 <h1>Démo3 : Liaison de données entre une zone de liste déroulante et une vue en grille</h1><br />
57 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ connectionStrings:NorthWind %>"
58 SelectCommand="sélectionnez distinct (pays) des clients"></asp:SqlDataSource>
59 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ connectionStrings:NorthWind %>"
60 SelectCommand="sélectionnez l'ID client, le nom de l'entreprise, le pays parmi les clients où country=@Country ">
61 <SélectionnerParamètres>
62 <asp:ControlParameter Name="Country" ControlID="DropDownList1" PropertyName="SelectedValue" />
63 </SélectionnerParamètres>
64 </asp:SqlDataSource>
65 <div>
66 <asp:DropDownList ID="DropDownList1" runat="server" Largeur="239px"
67 DataSourceID="SqlDataSource1" DataTextField="Pays" DataValueField="Pays">
68 </asp:DropDownList>
69 <input id="Button4" type="button" value="Refresh" onclick="CallServer2(DropDownList1)"/>
70 </div>
71 <br />
72 <span id="gridspan">
73 <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" CellPadding="4" ForeColor="#333333" GridLines="None">
74 <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanc" />
75 <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
76 <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Marine" />
77 <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Centre" />
78 <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanc" />
79 <AlternatingRowStyle BackColor="Blanc" />
80 </asp:GridView>
81 </span>
82 </div>
83 </form>
84
85</html>
86
testAJAX.aspx.vb
1
2Système d'importation
3Importation du système.Données
4Importation du système.Configuration
5Importations System.Web
6Importation System.Web.Security
7Importation System.Web.UI
8Importation System.Web.UI.WebControls
9Importations System.Web.UI.WebControls.WebParts
10Importations System.Web.UI.HtmlControls
11Importation System.IO
12Système d’importation.Mondialisation
13
14Test de classe publique partielleAJAXTest de classeAJAX
15 Hérite de System.Web.UI.Page
16 Implémente ICallbackEventHandler
17 Protected Sub Page_Load()Sub Page_Load (ByVal expéditeur en tant qu'objet, ByVal et As EventArgs)
18 'Enregistrer la méthode de traitement des événements client
19 'Il semble que cette phrase n'ait pas fonctionné, j'ai donc ajouté un bouton supplémentaire4 pour déclencher l'événement client par AndyDavis
20 DropDownList1.Attributes.Add("onchange", "CallServer2(this)")
21 'L'événement client de Button3 peut être défini directement dans la propriété OnClientClick de l'EDI, pas besoin de l'ajouter ici par AndyDavis
22 'Button3.Attributes.Add("onclick", "CallServer1(TextBox2, Label3);return false;")
23 Fin du sous-marin
vingt-quatre
25 Serveur privéReturn As String
26
27 Fonction publique GetCallbackResult()Fonction GetCallbackResult() As String Implémente ICallbackEventHandler.GetCallbackResult
28 'Afin de faciliter la visualisation de l'effet de chargement, ajoutez un délai
29 Système.Threading.Thread.Sleep (2000)
30
31 Dim parts() As String = serverReturn.Split("|"c)
32 'Appelez en fonction du nom de la méthode transmis et transmettez les paramètres correspondants. Actuellement, un seul paramètre est pris en charge.
33 Retour CStr([GetType]().GetMethod(parts(0)).Invoke(Me, New Object() {parts(1)}))
34 Fin de fonction
35
36
37 Public Sub RaiseCallbackEvent()Sub RaiseCallbackEvent(ByVal eventArgument As String) Implémente ICallbackEventHandler.RaiseCallbackEvent
38 retour du serveur = eventArgument
39 Fin du sous-marin
40
41 'Selon le nom du pays anglais ou l'abréviation transmis par le client, traduisez-le dans le nom du pays chinois correspondant
42 Fonction publique ServerMethod1()Fonction ServerMethod1(ByVal arg As String) As String
43 Dim s As String = ""
44 Sélectionnez Case arg.ToLower()
45 Cas "cn"
46 Etui "chine"
47 s = "Chine"
48 Quitter la sélection
49 Cas "nous"
50 s = "États-Unis"
51 Quitter la sélection
52 Autre cas
53 s = "Pays inconnu"
54 Quitter la sélection
55 Fin de la sélection
56 Retours
57 Fin de fonction
58
59 'Mettez à jour le contenu du GridView en fonction de la valeur transmise par le client et renvoyez le code HTML du GridView mis à jour.
60 Fonction publique ServerMethod2()Fonction ServerMethod2(ByVal arg As String) As String
61 DropDownList1.SelectedValue = argument
62 GridView1.DataBind()
63
64 Retour RenderControl (GridView1)
65 Fin de fonction
66
67 Surcharges privées Fonction RenderControl()Fonction RenderControl(ByVal control As Control) As String
68 Dimwriter1 As StringWriter = New StringWriter(CultureInfo.InvariantCulture)
69 Dim écrivain2 As HtmlTextWriter = New HtmlTextWriter(writer1)
70
71 contrôle.RenderControl(writer2)
72 écrivain2.Flush()
73 écrivain2.Close()
74
75 Retour écrivain1.ToString()
76 Fin de fonction
77Fin de classe
78