Consulte el texto original de Leon.Zhou: http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html.
Descargué el código de muestra y lo convertí a VB. La prueba de función AJAX fue exitosa. Pero encontré algunos pequeños problemas:
La demostración 1 es normal.
Demo2 no pudo probar la Línea 22 en AJAX.aspx.vb según el método de escritura original de Leon. Entonces modifiqué directamente la propiedad OnClientClick del botón3 en el entorno IDE, consulte la Línea 52 de testAJAX.asp. Prueba exitosa.
Demo3 no pudo agregar correctamente los atributos del cliente según el método original y la línea 20 en testAJAX.aspx.vb no funcionó. No sé por qué. Entonces solo agregué un botón3 para activar el evento del cliente.
Este es un buen ejemplo y vale la pena aprenderlo. Para obtener una explicación detallada del principio, consulte el texto original del autor. Al realizar la prueba, agregue <add name="NorthWind" ConnectionString="...cadena de conexión de base de datos correspondiente..."> en el archivo web.config de su proyecto.
testAJAX.aspx
1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="testAJAX.aspx.vb" Hereda="testAJAX" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transicional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
4
5<html xmlns=" http://www.w3.org/1999/xhtml " >
6<cabeza id="Cabeza1" runat="servidor">
7 <title>Envío de página ASP.NET 2.0 sin demostración de actualización</title>
8 <tipo de script="texto/javascript" idioma="javascript">
9 Función CallServer1() función CallServer1(control de entrada, contexto)
10 {
11 context.innerHTML = "<IMG SRC='images/pie.gif' />Cargando";
12 arg = 'ServerMethod1|' + inputcontrol.value;
13 <%= ClientScript.GetCallbackEventReference(Yo, "arg", "ReceiveServerData1", "context")%>;
14}
15
16 Función RecibirServerData1()función RecibirServerData1(resultado, contexto)
17 {
18 contexto.innerHTML = contexto.id + ":" + resultado;
19}
20
21 Función CallServer2() función CallServer2(obj)
Veintidós {
23 contexto = gridspan;
24 context.innerHTML = "<IMG SRC='images/pie.gif' />Se están cargando datos";
25 arg = "ServerMethod2|" + obj.valor;
26 <%= ClientScript.GetCallbackEventReference(Yo, "arg", "ReceiveServerData2", "context")%>;
27}
28
29 Función RecibirServerData2()función RecibirServerData2(resultado, contexto)
30 {
31 contexto.innerHTML = resultado;
32}
33
34 </script>
35</head>
36<cuerpo>
37 <formulario id="form1" runat="servidor">
38 <div>
39 <h1>Demo1:botón html envía datos</h1><br />
40 <asp:TextBox ID="TextBox1" runat="servidor"></asp:TextBox>
41 <input id="Botón1" tipo="botón" valor="Enviar a Etiqueta1" onclick="CallServer1(TextBox1, Etiqueta1)"/>
42 <input id="Botón2" tipo="botón" valor="Enviar a Etiqueta2" onclick="CallServer1(TextBox1, Label2)"/>
43 <br />
44 <asp:Label ID="Label1" runat="servidor" Text="Label1:"></asp:Label>
45 <br />
46 <asp:Label ID="Label2" runat="servidor" Text="Label2:"></asp:Label>
47 </div>
48 < horas />
49 <div>
50 <h1>Demo2: el botón del servidor envía datos</h1><br />
51 <asp:TextBox ID="TextBox2" runat="servidor"></asp:TextBox>
52 <asp:ID de botón="Botón3" runat="servidor" Texto="Botón" OnClientClick="CallServer1(TextBox2, Label3);return false;"
53 <asp:Label ID="Label3" runat="servidor" Text="Label3:"></asp:Label></div>
54 <hora />
55 <div>
56 <h1>Demo3: Vinculación de datos entre el cuadro de lista desplegable y la vista de cuadrícula</h1><br />
57 <asp:SqlDataSource ID="SqlDataSource1" runat="servidor" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
58 SelectCommand="seleccione distinto (país) de los clientes"></asp:SqlDataSource>
59 <asp:SqlDataSource ID="SqlDataSource2" runat="servidor" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
60 SelectCommand="seleccione ID de cliente, nombre de empresa, país de clientes donde país=@País ">
61 <Seleccionar parámetros>
62 <asp:ControlParameter Name="País" ControlID="DropDownList1" PropertyName="SelectedValue" />
63 </SeleccionarParámetros>
64 </asp:SqlDataSource>
65 <div>
66 <asp:DropDownList ID="DropDownList1" runat="servidor" Ancho="239px"
67 DataSourceID="SqlDataSource1" DataTextField="País" DataValueField="País">
68 </asp:DropDownList>
69 <input id="Botón4" tipo="botón" valor="Actualizar" onclick="CallServer2(DropDownList1)"/>
70 </div>
71 <br />
72 <span id="gridspan">
73 <asp:GridView ID="GridView1" runat="servidor" DataSourceID="SqlDataSource2" CellPadding="4" ForeColor="#333333" GridLines="Ninguno">
74 <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanco" />
75 <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
76 <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
77 <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Centro" />
78 <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanco" />
79 <AlternatingRowStyle BackColor="Blanco" />
80</asp:GridView>
81</span>
82 </div>
83 </formulario>
84</cuerpo>
85</html>
86
pruebaAJAX.aspx.vb
1
2Sistema de Importaciones
3Importa datos del sistema
4Sistema de Importaciones.Configuración
5Sistema de Importaciones.Web
6ImportacionesSistema.Seguridad.Web
7Sistema de importaciones.Web.UI
8Importa System.Web.UI.WebControls
9Importa System.Web.UI.WebControls.WebParts
10Importa controles System.Web.UI.Html
11Sistema de importaciones.IO
12Sistema de Importaciones.Globalización
13
14Prueba de clase pública parcialAJAXPrueba de claseAJAX
15 Hereda la página UI web del sistema
16 Implementa ICallbackEventHandler
17 Sub Page_Load protegido () Sub Page_Load (remitente ByVal como objeto, ByVal y como EventArgs)
18 'Registrar método de procesamiento de eventos del cliente
19 'Parece que esta frase no funcionó, así que agregué un botón adicional4 para activar el evento del cliente por AndyDavis
20 DropDownList1.Attributes.Add("onchange", "CallServer2(este)")
21 'El evento del cliente de Button3 se puede configurar directamente en la propiedad OnClientClick en el IDE, no es necesario que AndyDavis lo agregue aquí
22 'Button3.Attributes.Add ("al hacer clic", "CallServer1 (TextBox2, Label3); devuelve falso;")
23 Subtítulo final
veinticuatro
25 Servidor privadoDevolver como cadena
26
27 Función pública GetCallbackResult()Función GetCallbackResult() como cadena implementa ICallbackEventHandler.GetCallbackResult
28' Para facilitar la visualización del efecto de carga, agregue un retraso
29 Sistema.Threading.Thread.Sleep(2000)
30
31 Partes tenues() Como cadena = serverReturn.Split("|"c)
32 'Llame según el nombre del método pasado y pase los parámetros correspondientes. Actualmente solo se admite un parámetro.
33 Devolver CStr([GetType]().GetMethod(parts(0)).Invoke(Me, New Object() {parts(1)}))
34 Función final
35
36
37 Public Sub RaiseCallbackEvent()Sub RaiseCallbackEvent(ByVal eventArgument As String) Implementa ICallbackEventHandler.RaiseCallbackEvent
38 serverReturn = eventArgument
39 Subtítulo final
40
41 'Según el nombre del país en inglés o la abreviatura transmitida por el cliente, traducirlo al nombre del país en chino correspondiente.
42 Función pública MétodoServidor1()Función MétodoServidor1(ByVal arg como cadena) Como cadena
43 Dim s como cadena = ""
44 Seleccione Caso arg.ToLower()
45 Caso "cn"
46 Caso "china"
47 s = "China"
48 Salir Seleccionar
49 Caso "nosotros"
50 s = "Estados Unidos"
51 Salir Seleccionar
52 Caso más
53 s = "País desconocido"
54 Salir Seleccionar
55 Selección final
56 devoluciones
57 Función final
58
59 'Actualiza el contenido de GridView según el valor pasado por el cliente y devuelve el html de GridView actualizado
60 Función pública ServerMethod2()Función ServerMethod2(ByVal arg como cadena) Como cadena
61 DropDownList1.SelectedValue = argumento
62 GridView1.DataBind()
63
64 Devolver RenderControl(GridView1)
65 Función final
66
67 Función de sobrecarga privada RenderControl()Función RenderControl(control ByVal como control) como cadena
68 Dim escritor1 como StringWriter = New StringWriter(CultureInfo.InvariantCulture)
69 Dim escritor2 como HtmlTextWriter = Nuevo HtmlTextWriter(escritor1)
70
71 control.RenderControl(escritor2)
72 escritor2.Flush()
73 escritor2.Cerrar()
74
75 Devolver escritor1.ToString()
76 Función final
77Fin de clase
78