一個入門者學習用的小小小小網站範例(8)- 書籍資訊導覽功能設計

  • 1651
  • 0
  • 2011-12-21



這個範例網站的主要功能,在於介紹「藍海文化」網站出版的圖書,其中提供了四種不同類型的書籍檢視方式,在前述幾篇網站功能的介紹說明當中,已經針對這一部份的網頁操作進行了相關的說明,這一篇開始逐一針對各種功能的實作步驟進行說明。

預告楔子

這個範例網站的主要功能,在於介紹「藍海文化」網站出版的圖書,其中提供了四種不同類型的書籍檢視方式,在前述幾篇網站功能的介紹說明當中,已經針對這一部份的網頁操作進行了相關的說明,這一篇開始逐一針對各種功能的實作步驟進行說明。
 
 
在這個設計頁面中,除了套用主版頁面之外,它僅在其中配置了一個DataList 控制項,用來呈現搜尋的書籍資料結果。讀者要特別注意的是,這裡並沒有配置連線資料庫所需的SqlDataSource 控制項,取而代之的是在網頁的載入事件處理程序中,透過ADO.NET 程式碼進行搜尋功能的實作。先回到稍早討論首頁搜尋功能的程式碼,當使用者按下「查詢」按鈕的時候,執行以下的Click 程式區塊:
 
 
現在切換至後置程式碼,來看看其中的網頁載入事件處理程序,列舉如下:
Protected Sub Page_Load(ByVal sender As Object, 
			ByVal e As System.EventArgs) Handles Me.Load

	Dim connString As String
	connString = _
		ConfigurationManager.ConnectionStrings( _
		"ConnectionString").ToString()


	Dim conn As New SqlConnection(connString)
	Dim cmd As New SqlCommand()
	Dim reader As SqlDataReader
	Dim conditionString As String

	cmd.Connection = conn
	cmd.CommandText = _
		"SELECT * FROM Books " & _
		"WHERE " & _
		"BookID LIKE @BookID OR " & _
		"Title LIKE @Title OR " & _
		"Author LIKE @Author "

	conditionString = "%" + Request.QueryString("bookid") + "%"

	Dim bookPara As New SqlParameter
	bookPara.ParameterName = "@BookID"
	bookPara.SqlDbType = Data.SqlDbType.NVarChar
	bookPara.Value = conditionString
	cmd.Parameters.Add(bookPara)

	Dim titlePara As New SqlParameter
	titlePara.ParameterName = "@Title"
	titlePara.SqlDbType = Data.SqlDbType.NVarChar
	titlePara.Value = conditionString
	cmd.Parameters.Add(titlePara)

	Dim authorPara As New SqlParameter
	authorPara.ParameterName = "@Author"
	authorPara.SqlDbType = Data.SqlDbType.NVarChar
	authorPara.Value = conditionString
	cmd.Parameters.Add(authorPara)
	conn.Open()

	reader = cmd.ExecuteReader()
	BookDataList.DataSource = reader
	BookDataList.DataBind()
        conn.Close()
End Sub

一開始建立所需的SqlConnection 與SqlCommand 物件,指定所需的SQL 陳述式,這段SQL 以LIKE 關鍵字進行BookID、Title 以及Author 等三個欄位 的模糊比對。 以下這一行程式碼,取得隨著網址傳遞過來的搜尋條件「bookid」,建 立一個條件值字串conditionString,然後將這個值逐一指定給「@BookID」、 「@Title」以及「@Author」等參數。

conditionString = "%" + Request.QueryString("bookid") + "%"

最後,執行ExecuteReader 方法,取得回傳的SqlDataReader 物件,並且將其設定給畫面上的DataList 控制項BookDataList。

預告楔子