天天看點

基于.net 的天氣預報 .net c# webservice

前一陣閑着沒事弄了一個天氣預報的東西,特在此與大家分享!

技術标簽:asp.net(c#) webservice .net cache AjaxPanel

技術交流:QQ:540594993   msn:[email protected]

源碼下載下傳:http://download.csdn.net/user/zuixinjiang1124

 大緻功能介紹:

1.通過webservice獲得中國氣象局全國氣象資料

2.基于asp.net可選擇性的檢視全國各大城市天氣情況

3.應用緩存技術快速加載天氣資料

代碼以及工程貼圖如下:

基于.net 的天氣預報 .net c# webservice

class.cs代碼:

/// <summary>

///cache緩存相關 Create by zhangjianhai 2011.2.23

/// </summary>

public class WeatherClass

{

public WeatherClass()

{

//

//TODO: 在此處添加構造函數邏輯

//

}

public static DataSet getDataSet()

{

DataSet ds = (DataSet)HttpContext.Current.Cache["dataSetCache"];

//判斷緩存

if (ds == null)

{

WeatherWebService weather = new WeatherWebService();

ds = weather.getSupportDataSet();

HttpContext.Current.Cache.Insert("dataSetCache", ds, null, DateTime.Now.AddHours(12), TimeSpan.Zero, CacheItemPriority.High, null);//添加cache緩存提高速度

}

return ds;

}

public static string[] getCityWeather(string cityCode)

{

string cacheName = "weather"+cityCode.Trim();

string[] weatherArray=HttpContext.Current.Cache["cacheName"] as string[];

if (weatherArray == null)

{

WeatherWebService weather = new WeatherWebService();

weatherArray=weather.getWeatherbyCityName(cityCode);

HttpContext.Current.Cache.Insert(cacheName, weatherArray, null, DateTime.Now.AddMinutes(90), TimeSpan.Zero, CacheItemPriority.High, null);

}

return weatherArray;

}

}

default.aspx.cs代碼如下:

public partial class Default2 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

try

{

DataSet ds = WeatherClass.getDataSet();

if (!IsPostBack)//第一次加載頁面

{

DataTable provinceTable = ds.Tables[0];

DataView provinceView = ds.Tables[0].DefaultView;

Province.DataSource = provinceView;

Province.DataTextField = "Zone";

Province.DataValueField = "ID";

Province.DataBind();

Province.SelectedIndex = 0;

City.SelectedIndex = 1;

CityDataBind("1"); //'預設直轄市

Weather("54511"); //'預設上海

}

}

catch(Exception ex)

{

Title.Text = "發現一個錯誤";

}

}

protected void Province_SelectedIndexChanged(object sender, EventArgs e)

{

CityDataBind(Province.SelectedItem.Value.Trim());

}

protected void City_SelectedIndexChanged(object sender, EventArgs e)

{

if (City.Items[0].Value == "0")

{

City.Items.RemoveAt(0);

}

Weather(City.SelectedItem.Value.Trim());

}

private void CityDataBind(string zoneID)

{

DataSet ds = WeatherClass.getDataSet();

DataView cityView = ds.Tables[1].DefaultView;

cityView.RowFilter = "zoneID=" + zoneID;

City.DataSource = cityView;

City.DataTextField = "Area";

City.DataValueField = "AreaCode";

City.DataBind();

City.Items.Insert(0, new ListItem("選擇城市", "0"));

City.SelectedIndex = 0;

}

private void Weather(string cityCode)

{

string[] wa = WeatherClass.getCityWeather(cityCode);

Label1.Text = wa[10];

Label2.Text = wa[6] + "   " + wa[5] + "   " + wa[7];

Label3.Text = wa[13] + "   " + wa[12] + "   " + wa[14];

Label4.Text = wa[18] + "   " + wa[17] + "   " + wa[19];

Label5.Text = wa[11].Replace("/n", "<br />");

Label6.Text = wa[22].Replace("/n", "<br />");

Label7.Text = Convert.ToDateTime(wa[4]).ToString("yyyy年MM月dd日 dddd HH:mm");

Label8.Text = wa[0] + " / " + wa[1];

Image1.ImageUrl = "~/images/weather/" + wa[8];

Image2.ImageUrl = "~/images/weather/" + wa[9];

Image3.ImageUrl = "~/images/weather/" + wa[15];

Image4.ImageUrl = "~/images/weather/" + wa[16];

Image5.ImageUrl = "~/images/weather/" + wa[20];

Image6.ImageUrl = "~/images/weather/" + wa[21];

CityPhoto.ImageUrl = "http://www.cma.gov.cn/tqyb/img/city/" + wa[3];

CityPhoto.AlternateText = City.SelectedItem.Text;

}