在IE瀏覽器中使用Windows窗體控件(二)
作者::Thiru Thangarathinam
翻譯:秋楓
通過windows窗體控件訪問Web Service
窗體控件一個(gè)重要優(yōu)點(diǎn)就是你可以通過它在客戶端實(shí)現(xiàn)豐富的用戶信息。比如說,你可以通過窗體控件對(duì)Web服務(wù)的訪問從而在IE中顯示而不需要重新刷新該頁面。為了演示這點(diǎn),我們先來創(chuàng)建一個(gè)Web服務(wù),接著再來演示怎樣通過窗體控件調(diào)用Web服務(wù)。
創(chuàng)建Web service
我們創(chuàng)建一個(gè) Visual C# Asp.net web service 新項(xiàng)目,名字取為AuthorsWebService。
建立以后,我們修改服務(wù)類名稱為AuthorsService,同時(shí)在類里面增加一個(gè)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;
}
上面方法的代碼比較簡(jiǎn)單,我們把數(shù)據(jù)庫(kù)連接字符串儲(chǔ)存到了Web.config文件的appSettings節(jié)點(diǎn)上,如下:
<appSettings>
<add key="connectionString" value="server=localhost;uid=sa;pwd=thiru;database=Pubs"></add>
</appSettings>
上面代碼中, 我們創(chuàng)建了一個(gè)SqlConnnection實(shí)例,同時(shí)把上面的連接字符串作為參數(shù)傳入。接著創(chuàng)建一個(gè)SqlDataAdapter對(duì)象,傳入兩個(gè)參數(shù)――查詢字符串和SqlConnnection實(shí)例。調(diào)用SqlDataAdapter實(shí)例的Fill方法來執(zhí)行數(shù)據(jù)庫(kù)查詢并把結(jié)果填充到DataSet。現(xiàn)在我們完成了Web服務(wù)的創(chuàng)建,接下去來建立一個(gè)他的一個(gè)客戶端調(diào)用。
創(chuàng)建windows窗體控件作為Web服務(wù)客戶端
在這里,我們是想用一個(gè)窗體控件來調(diào)用Web Service,因此新建一個(gè)Visual C#窗體控件項(xiàng)目取名AuthorsWebServiceClientControl:。
完成后,修改默認(rèn)用戶控件名稱為AuthorsControl.。我們?cè)谏厦嫣砑恿艘粋(gè)DataGrid控件取名GridAuthors 同時(shí)添加一個(gè)按鈕取名BtnClick。注冊(cè)按鈕的點(diǎn)擊事件,在事件處理函數(shù)中,將會(huì)調(diào)用WebService。在這之前我們需要添加項(xiàng)目的Web引用,輸入剛才創(chuàng)建的Web服務(wù)地址。編輯器會(huì)生成該服務(wù)的代理,添加Web服務(wù)引用如下:
圖
服務(wù)代理創(chuàng)建以后,我們?cè)诎粹o事件中添加代碼:
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;
} 在上面代碼中,我們創(chuàng)建了web服務(wù)代理的一個(gè)實(shí)例,并調(diào)用GetAuthors方法把返回的數(shù)據(jù)集賦值給GridAuthors的DataSource屬性。接著編譯這個(gè)窗體控件,然后配置虛擬目錄。
創(chuàng)建Html頁面和建立虛擬路徑
在這一步中,我們通過創(chuàng)建一個(gè)Html頁面來使用上面創(chuàng)建的那個(gè)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>
現(xiàn)在我們需要?jiǎng)?chuàng)建一個(gè)虛擬目錄使該控件能正常工作,并把AuthorsDisplay.htm和AuthorsWebServiceClientControl.dll放在一起。打開該瀏覽器輸入地址,你就會(huì)看到一個(gè)按鈕和一個(gè)空的DataGrid,如果你點(diǎn)擊該命令按鈕,控件就會(huì)調(diào)用Web服務(wù)同時(shí)把結(jié)果寫到了DataGrid中。頁面結(jié)果如下所示。
在下一節(jié)中我們看看對(duì)進(jìn)
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!