前一陣閑着沒事弄了一個天氣預報的東西,特在此與大家分享!
技術标簽:asp.net(c#) webservice .net cache AjaxPanel
技術交流:QQ:540594993 msn:[email protected]
源碼下載下傳:http://download.csdn.net/user/zuixinjiang1124
大緻功能介紹:
1.通過webservice獲得中國氣象局全國氣象資料
2.基于asp.net可選擇性的檢視全國各大城市天氣情況
3.應用緩存技術快速加載天氣資料
代碼以及工程貼圖如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuEmNlFVNyQTMzUDO5ITMfBzLcRjMvwlMwETMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)
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;
}