故事剧情:好吧,本来我已经写了很多,手贱,关的太快,没有保存就把日志关了。。。我大概的再写一遍,无语
工具: sqlServer 2008,vs2010
1、新建网站如:WebServiceForSearch,创建WebService,名叫SearchAmountOfProduct.,内有方法
[WebMethod] public DataSet DsByName(string name) { StringBuilder sb = new StringBuilder(); sb.Append(" select pa.amount,p.name,p.category,"); sb.Append(" p.price,p.publishDate,p.publishhouse,"); sb.Append(" p.author from Product p"); sb.Append(" join ProductAmount pa on pa.id=p.id"); sb.Append(" where 1=1 "); sb.Append(" and name like '%"+name+"%'"); return sqlHelper.ExecuteDataset(sqlHelper.ConnectionString,CommandType.Text,sb.ToString(),null); } [WebMethod] public int add(int a,int b ) { return a + b; }
2、记录webservice的URLhttp://localhost:3520/Web/SearchAmountOfProduct.asmx
3、建调用网站CallWebServiceSearch,随便建个页面default.aspx,放一个gridView
4、右击网站,添加web引用,URL里输入第二步的url,web服务启名ProductService
5、先是同步调用,简单到爆
(1)先引用web服务名的命名空间,如ProductService
(2)然后代码如下
//同步
SearchAmountOfProduct sa = new SearchAmountOfProduct();
gvList.DataSource = sa.DsByName("").Tables[0];
gvList.DataBind();
6、同步调用的时候,系统无法做其他事,必须同步先完全的执行完才行,这个明显给用户体验带来个致命的效果,现在是需要,调用的同时,网站仍然可以运行其他功能,同时等待webserice服务调用得到的数据。so,we want async!!
(2)仍然引用web服务名的命名空间,如ProductService
(3)代码如下
protected void Page_Load(object sender,EventArgs e) { if (!IsPostBack) { //同步 //SearchAmountOfProduct sa = new SearchAmountOfProduct(); //gvList.DataSource = sa.DsByName("").Tables[0]; //gvList.DataBind(); //异步 SearchAmountOfProduct sa = new SearchAmountOfProduct(); sa.DsByNameAsync("");//关键地方,告诉系统是异步 sa.DsByNameCompleted += new DsByNameCompletedEventHandler(sa_DsByNameCompleted);//委托事件 } } void sa_DsByNameCompleted(object sender,DsByNameCompletedEventArgs e) { gvList.DataSource = e.Result.Tables[0];//e.Result是结果集,即sa的方法 gvList.DataBind(); }结束!(源代码已经上传,代码虽然很初级,也很简单,但相信能帮到刚开始学习webServices的人)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。