在IE浏览器中使用Windows窗体控件(二)

** 在 IE ** ** 浏览器中使用 Windows ** ** 窗体控件(二) **

作者 : : Thiru Thangarathinam

翻译:秋枫

**
通过 windows 窗体控件访问 Web Service
**

窗体控件一个重要优点就是你可以通过它在客户端实现丰富的用户信息。比如说,你可以通过窗体控件对 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节点上,如下:

1<appsettings>
2<add key="connectionString" value="server=localhost;uid=sa;pwd=thiru;database=Pubs"></add>
3</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 。下面是他的代码:

1<html>
2<body>
3<p>Authors Display Control<br/><br/>
4<object classid="http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl" height="500" id="AuthorsControl1" viewastext="" width="500">
5</object>
6<br/><br/>
7</p></body>
8</html>

现在我们需要创建一个虚拟目录使该控件能正常工作,并把 AuthorsDisplay.htm 和 AuthorsWebServiceClientControl.dll 放在一起。打开该浏览器输入地址,你就会看到一个按钮和一个空的 DataGrid ,如果你点击该命令按钮,控件就会调用 Web 服务同时把结果写到了 DataGrid 中。页面结果如下所示。

在下一节中我们看看对进程的调试。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus