См. исходный текст Леона.Чжоу: http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html.
Я загрузил пример кода и преобразовал его в VB. Проверка функции AJAX прошла успешно. Но столкнулся с небольшими проблемами:
Демо1 нормально.
В Demo2 не удалось протестировать строку 22 в AJAX.aspx.vb в соответствии с исходным методом записи Леона. Поэтому я напрямую изменил свойство OnClientClick кнопки button3 в среде IDE, см. строку 52 файла testAJAX.asp. Тест прошел успешно.
В Demo3 не удалось успешно добавить атрибуты клиента в соответствии с исходным методом, а строка 20 в testAJAX.aspx.vb не работала. Не знаю почему. Поэтому я добавил только кнопку3, чтобы вызвать событие клиента.
Это хороший пример, и его стоит изучить. Подробное объяснение принципа можно найти в оригинальном тексте автора. При тестировании добавьте <add name="NorthWind" ConnectionString="...соответствующую строку подключения к базе данных..."> в файл web.config вашего проекта.
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>Отправка страницы ASP.NET 2.0 без демонстрации обновления</title>
8 <script type="text/javascript" язык ="javascript">
9 Функция CallServer1() функция CallServer1(inputcontrol, context)
10 {
11 context.innerHTML = "<IMG SRC='images/pie.gif' />Загрузка";
12 arg = 'ServerMethod1|' + inputcontrol.value;
13 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData1", "context")%>;
14}
15
16 Функция ПолучатьСерверДанные1()функция ПолучатьСерверДанные1(результат, контекст)
17 {
18 context.innerHTML = context.id + ":" + результат;
19}
20
21 Функция CallServer2() функция CallServer2(obj)
двадцать два {
23 контекст = диапазон сетки;
24 context.innerHTML = "<IMG SRC='images/pie.gif' />Идет загрузка данных";
25 arg = "ServerMethod2|" + obj.value;
26 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData2", "context")%>;
27}
28
29 Функция ПолучатьСерверДанные2()функция ПолучатьСерверДанные2(результат, контекст)
30 {
31 context.innerHTML = результат;
32}
33
34 </скрипт>
35</head>
36<тело>
37 <form id="form1" runat="server">
38 <дел>
39 <h1>Кнопка Demo1:html отправляет данные</h1><br />
40 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
41 <input id="Button1" type="button" value="Отправить на Label1" onclick="CallServer1(TextBox1, Label1)"/>
42 <input id="Button2" type="button" value="Отправить на 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 <час />
49 <дел>
50 <h1>Демо 2: Кнопка сервера отправляет данные</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 <час />
55 <дел>
56 <h1>Демо3: Связывание данных между раскрывающимся списком и сеткой</h1><br />
57 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
58 SelectCommand="выберите отдельную (страну) среди клиентов"></asp:SqlDataSource>
59 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
60 SelectCommand="выберите идентификатор клиента, название компании и страну среди клиентов, где страна=@Страна ">
61 <Выбор параметров>
62 <asp:ControlParameter Name="Country" ControlID="DropDownList1" PropertyName="SelectedValue" />
63 </ВыбратьПараметры>
64 </asp:SqlDataSource>
65 <дел>
66 <asp:DropDownList ID="DropDownList1" runat="server" Width="239px"
67 DataSourceID="SqlDataSource1" DataTextField="Страна" DataValueField="Страна">
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="White" />
75 <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
76 <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
77 <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
78 <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
79 <AlternatingRowStyle BackColor="Белый" />
80 </asp:GridView>
81 </span>
82 </div>
83 </форма>
84</body>
85</html>
86
testAJAX.aspx.vb
1
2Система импорта
3Импортировать System.Data
4Импортировать System.Configuration
5Импортирует System.Web
6Импортирует System.Web.Security
7Импортирует System.Web.UI
8. Импорт элементов System.Web.UI.WebControls.
9Импортирует System.Web.UI.WebControls.WebParts
10Импортирует элементы управления System.Web.UI.HtmlControls
11Импортирует System.IO
12. Система импорта. Глобализация
13
14Частичная проверка открытого классаAJAXТест классаAJAX
15 Наследует System.Web.UI.Page
16 реализует ICallbackEventHandler
17 Protected Sub Page_Load()Sub Page_Load (отправитель ByVal как объект, ByVal e как EventArgs)
18 'Регистрация метода обработки событий клиента
19 'Кажется, это предложение не сработало, поэтому я добавил дополнительную кнопку4 для запуска клиентского события от AndyDavis
20 DropDownList1.Attributes.Add("onchange", "CallServer2(this)")
21. Клиентское событие Button3 можно установить непосредственно в свойстве OnClientClick в IDE, нет необходимости добавлять его сюда AndyDavis.
22 'Button3.Attributes.Add("onclick", "CallServer1(TextBox2, Label3); return false;")
23 Конечная замена
двадцать четыре
25 Частный серверВозврат как строка
26
27 Открытая функция GetCallbackResult()Функция GetCallbackResult() как строковая реализация ICallbackEventHandler.GetCallbackResult
28 'Чтобы облегчить просмотр эффекта загрузки, добавьте задержку
29 System.Threading.Thread.Sleep(2000)
30
31 Dim parts() As String = serverReturn.Split("|"c)
32 'Вызов по переданному имени метода и передача соответствующих параметров. В настоящее время поддерживается только один параметр.
33 Return CStr([GetType]().GetMethod(parts(0)).Invoke(Me, New Object() {parts(1)}))
34 Функция завершения
35
36
37 Public Sub RaiseCallbackEvent()Sub RaiseCallbackEvent(ByVal eventArgument As String) Реализует ICallbackEventHandler.RaiseCallbackEvent
38 serverReturn = eventArgument
39 Конечная замена
40
41 'В соответствии с названием или аббревиатурой страны на английском языке, переданным от клиента, переведите его на соответствующее название страны на китайском языке.
42 Открытая функция ServerMethod1()Function ServerMethod1(ByVal arg As String) As String
43 Dim s As String = ""
44 Выбор регистра arg.ToLower()
45 Дело «сп»
46 Корпус "Китай"
47 с = «Китай»
48 Выход Выбор
49 Дело «нас»
50 с = «Соединенные Штаты»
51 Выход Выбор
52 Другое дело
53 с = «Неизвестная страна»
54 Выход Выбор
55 Конечный выбор
56 возвратов
57 Конечная функция
58
59 'Обновляем содержимое GridView на основе значения, переданного от клиента, и возвращаем обновленный HTML-код GridView.
60 Открытая функция ServerMethod2()Function ServerMethod2(ByVal arg As String) As String
61 DropDownList1.SelectedValue = arg
62 GridView1.DataBind()
63
64 Возврат RenderControl(GridView1)
65 Конечная функция
66
67 Частные перегрузки Функция RenderControl()Function RenderControl(ByVal control As Control) As String
68 Dim write1 As StringWriter = New StringWriter(CultureInfo.InvariantCulture)
69 Dim Writer2 As HtmlTextWriter = Новый HtmlTextWriter(writer1)
70
71 control.RenderControl(писатель2)
72 писатель2.Flush()
73 писатель2.Закрыть()
74
75 Возврат писателя1.ToString()
76 Функция завершения
77Конец урока
78