根据访问者的ip地址获得当地的天气情况,最简单的一种方法就是加一个iframe框架方法如下:
<iframe src="http://m.weather.com.cn/m/pn12/weather.htm" frameborder="0" width="200px" height="110px" scrolling="no"></iframe>
如果想得到比较详细的页面可以点击这个网址:http://weather.xixik.com/
这样方法虽然简单,但是有一个很大的缺点就是在IE浏览器下它的背景色是白色的(谷歌浏览器的背景色是透明的)如果你想将他显示在有背景色的条上会出现这种效果:

为了解决这种缺点可以使用第二种方法通过天气预报的WebService接口调用:
思想:1、先找确定访问者所在的地区。
string strResponse = GetPageData("http://www.123cha.com/");
Match match = Regex.Match(strResponse, @"来自: (.+) ");
string[] addresses = match.Groups[1].Value.Replace(" ", " ").Split(' ');//获得Ip所在的城市
string address = "北京";
int n = 0;
if (addresses.Length >= 3)
{
n = 1;
}
address = addresses[n].Substring(0, addresses[n].Length - 1);
2、添加WebService引用:
添加webService的方法:
一、添加Web引用(如果是2010添加服务引用)

二、在输入框中输入下面的网址:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 然后点击前往,记下引用名(引用名可以自己改写)

最后代码:
Weather.WeatherWebService w = new Weather.WeatherWebService();
//把webservice当做一个类来操作
string[] s = new string[23];//声明string数组存放返回结果
string city = address;//获得文本框录入的查询城市
s = w.getWeatherbyCityName(city);
//以文本框内容为变量实现方法getWeatherbyCityName
if (s[8] == "")
{
//MessageBox.Show("暂时不支持您查询的城市");
}
else
{
string st = s[10];
}
提升:
1、这样下来虽然效果实现了,但是加载速度很慢。为了不让它影响其它页面的加载速度,我将获取天气预报这块单独写了一个页面。然后在需要调用天气的预报的页面加了一个Frame框架。这样天气预报虽然加载慢但是却不会影响其他页面。
2、有好几个页面都用到这个天气预报,我没必要换一个页面就去用WebService去调用天气情况。针对这样情况,我采取只第一次加载的方法。然后将获得天气预报放到Cookie里这样其他页面再使用的时候我可以直接从cookie里调用省了很多时间。
具体代码如下:
string content = "<table><tr id='temprature' runat='server'><td>" + dt + " " + week + "<td>" + address + ": " + s[10] + "</td></tr></table>";
HttpCookie wea = new HttpCookie("weather");
wea.Values["date"] = dt;
wea.Values["week"] = week;
wea.Values["address"] = address;
wea.Values["tian"] = s[10];
Response.Cookies.Add(wea);
temprature.InnerHtml = content;
if (Request.Cookies["weather"] != null)
{
HttpCookie wea = Request.Cookies["weather"];
string dt = wea.Values["date"];
string week=wea.Values["week"];
string address=wea.Values["address"];
string tian=wea.Values["tian"];
string content = "<table><tr id='temprature' runat='server'><td>" + dt + " " + week + "<td>" + address + ": " + tian + "</td></tr></table>";
temprature.InnerHtml = content;
}
这样速度加快了很多。
做法:
一步:ppdf:http://www.persits.com/asppdf.exe(下载软件) http://www.asppdf.com/download.html(获得注册码)
二步:安装记下安装目录,然后在安装目录下找到bin文件夹下的dll文件。复制到我们的项目中
三步:在项目中添加引用

4、代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ASPPDFLib;
using System.Reflection;
namespace test
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
testasppdf();
}
private void testasppdf()
{
IPdfManager objPdf = new PdfManager();
IPdfDocument objDoc = objPdf.CreateDocument(Missing.Value);
objDoc.ImportFromUrl("http://www.google.com", Missing.Value, Missing.Value, Missing.Value);
String strFilename = objDoc.Save(Server.MapPath("1.pdf"), false);
}
}
}
从中感受:
在做的过程中我遇到了很多问题,包括怎么引用怎么解决注册码的问题很多很多。不过还好我没有放弃当我完成时。回头去读这篇参考博文发现它写的已经很详细了,只是我自己没有认真去读而已。再后来我自己装了一个虚拟机,装的过程中也遇到很多问题。曾想过放弃,但是最终坚持下来了。发现无论什么困难,只要你下定决心去做。方法会有的,你也会做出来的。相信你自己。一如最近学歌,我唱歌唱的不是很好。尤其是近来长大了,更是难学。但是我从来都没有放弃过学歌。在上周末跟姐姐唱歌时发现自己唱歌的能力进步很大。也发现了什么东西都真的没有什么难的。在一定环境下熏陶,加上你自己不放弃的努力。熟练了,也就会了。其实学什么都一样,在一定环境的熏陶下,熟练了你也就会了。
只要是你想得出的效果,方法总是会有的。今天在用GridView时,需要它实现首行文字缩进。现在的效果是这样的:

我想要的效果是这样的:

刚开始实现起来,我先用的是padding_left:10px;后来发现没有效果。再后来又用margin_left:10px;后来发现还是没有效果。再后来试了好多方法,曾经几度想放弃。
最后决定做最后的努力,就是一个一个属性值的找。功夫不负有心人,我看到了text-indent这个属性(设置文本缩进)于是我设置text-indent:8px;结果效果就真出来
了。当时很开心,看到经过自己的努力实现了自己想要的效果。那份开心是无法言语的。
这件事让我们明白了一件事就是没有你做不到的效果,只要是你想要实现的效果并且坚持下来。什么效果都可以实现。
近来找房子让我受了不少苦,不敢租太贵的。因为工资不高没有钱。在找房子的时候我明白了一件事就是我之所以受今天这份苦,只因我平时的懒惰不努力。倘若我平时足够努力,工资足够高。我何必受这份苦。2000的房子又算什么,如果你有足够的收入的话。只因自己平时不努力,太懒惰。让自己受了今日的苦楚。今天我告诉自己,如果你不想受苦。只有努力,只有努力才不会受苦。才可以活的有尊严。我会记下今天的日子跟感受的。。。
我工作遇到这么一个情况:
算当前周的课程,有两种方法一种是用sql自带的函数datediff(select * from Table8 where datediff(wk,COLUMN8,getdate())=0)
另一种是在c#后台代码中直接写然后传参。我想问一下这两种方法哪一种更好,速度更快。
分析:
看你想把压力给谁
数据量不大的话,还是sql会好一些
感悟:
以前都是在后台去算,今天想了想,又查了查。发现在sql里就可以实现。看来我的sql基础实在是太薄弱了。这让我再一次意识到自己还有许多需要学习的。
下面程序前辈写的sql取当周时间的详细做法:

--按日
select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date]) 
--按周quarter
select sum(consume),datename(week,[date]) from consume_record where year([date]) = '2006' group by datename(week,[date]) 
--按月
select sum(consume),month([date]) from consume_record where year([date]) = '2006' group by month([date]) 
--按季
select sum(consume),datename(quarter,[date]) from consume_record where year([date]) = '2006' group by datename(quarter,[date]) 

--指定日期你就看上面的例子变通下呀,无非就是一个聚合函数和Group by 
select [date],sum(consume) from consume_record where [date] between '2006-06-01' and '2006-07-10' group by [date]