Основы ASP.NET 2.0




Callback с параметрами - часть 2


using System; using System.Xml;

public partial class Callback : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler { string _callbackResult; protected void Page_Load(object sender, EventArgs e) { GlobalWeather ws = new GlobalWeather(); string results = ws.GetCitiesByCountry("Russia"); XmlDocument doc = new XmlDocument(); doc.LoadXml(results); XmlNode child = doc.ChildNodes[0]; foreach (XmlElement el in child.ChildNodes) { XmlElement city = el["City"]; DropDownListCity.Items.Add(city.InnerText); } string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetTempFromServer", "context"); string cbScript = "function UseCallback(arg, context)" + "{" + cbReference + ";" + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallback", cbScript, true); } public void RaiseCallbackEvent(string eventArg) { GlobalWeather ws = new GlobalWeather(); _callbackResult = ws.GetWeather(eventArg, "Russia").ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(_callbackResult); XmlNode child = doc.ChildNodes.Item(1); XmlElement el = child["Temperature"]; _callbackResult = el.InnerText; } public string GetCallbackResult() { return _callbackResult; } }

Для работы этого примера нужно создать web-ссылку на сервис "http://www.webservicex.net/globalweather.asmx". Как работать с web-сервисами, описывалось в лекции 15.

Разница с клиентским обратным вызовом в том, что этот пример отправляет функции обратного вызова параметр.

Это делается в функции JavaScript GetTemp() на странице .aspx:

function GetTemp() { var City = document.forms[0].DropDownListCity.value; UseCallback(City, ""); }

Функция JavaScript читает значение, выбранное в DropDownListCity, и использует в качестве аргумента функции обратного вызова. Этот пример, как и предыдущий, обновляет страницу не полностью, а только необходимые ее части.




Содержание  Назад  Вперед