窗体控件一个重要优点就是你可以通过它在客户端实现丰富的用户信息。比如说,你可以通过窗体控件对Web服务的访问从而在IE中显示而不需要重新刷新该页面。为了演示这点,我们先来创建一个Web服务,接着再来演示怎样通过窗体控件调用Web服务。
创建Web service
我们创建一个 Visual C# Asp.net web service 新项目,名字取为AuthorsWebService。
建立以后,我们修改服务类名称为AuthorsService,同时在类里面增加一个GetAuthors方法到里面,该方法的代码如下:
[WebMethod]
public DataSet GetAuthors()
{
string connString = System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
SqlConnection sqlConn = new SqlConnection(connString);
DataSet dstAuthors = new DataSet("Authors");
SqlDataAdapter adapter = new SqlDataAdapter("Select * from Authors",sqlConn);
adapter.Fill(dstAuthors,"Author");
sqlConn.Close();
sqlConn.Dispose();
return dstAuthors;
}
上面方法的代码比较简单,我们把数据库连接字符串储存到了Web.config文件的appSettings节点上,如下:
<appSettings>
<add key="connectionString" value="server=localhost;uid=sa;pwd=thiru;database=Pubs"></add>
</appSettings>
上面代码中,
我们创建了一个SqlConnnection实例,同时把上面的连接字符串作为参数传入。接着创建一个SqlDataAdapter对象,传入两个参数――查询字符串和SqlConnnection实例。调用SqlDataAdapter实例的Fill方法来执行数据库查询并把结果填充到DataSet。现在我们完成了Web服务的创建,接下去来建立一个他的一个客户端调用。
创建windows窗体控件作为Web服务客户端
在这里,我们是想用一个窗体控件来调用Web Service,因此新建一个Visual C#窗体控件项目取名AuthorsWebServiceClientControl:。
完成后,修改默认用户控件名称为AuthorsControl.。我们在上面添加了一个DataGrid控件取名GridAuthors 同时添加一个按钮取名BtnClick。注册按钮的点击事件,在事件处理函数中,将会调用WebService。在这之前我们需要添加项目的Web引用,输入刚才创建的Web服务地址。编辑器会生成该服务的代理,添加Web服务引用如下:
图
服务代理创建以后,我们在按钮事件中添加代码:
private void BtnClick_Click(object sender, System.EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
AuthorsWebServiceProxy.AuthorsService authorsSvc = new
AuthorsWebServiceProxy.AuthorsService();
this.GridAuthors.DataSource = authorsSvc.GetAuthors();
this.Cursor = Cursors.Default;
}
在上面代码中,我们创建了web服务代理的一个实例,并调用GetAuthors方法把返回的数据集赋值给GridAuthors的DataSource属性。接着编译这个窗体控件,然后配置虚拟目录。
创建Html页面和建立虚拟路径
在这一步中,我们通过创建一个Html页面来使用上面创建的那个AuthorsWebServiceClientControl。下面是他的代码:
<html>
<body>
<p>Authors Display Control<br><br>
<object id="AuthorsControl1"
classid="http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</body>
</html>
现在我们需要创建一个虚拟目录使该控件能正常工作,并把AuthorsDisplay.htm和AuthorsWebServiceClientControl.dll放在一起。打开该浏览器输入地址,你就会看到一个按钮和一个空的DataGrid,如果你点击该命令按钮,控件就会调用Web服务同时把结果写到了DataGrid中。页面结果如下所示。
在下一节中我们看看对进程的调试。