摘要:給初學者的範例,多重欄位搜尋引擎 for GridView #2
自己動手寫程式
透過 SqlDataSource來作,以「組合SQL指令」的方式,搜尋多個欄位。
原文出處: http://www.taconet.com.tw/mis2000_aspnet/ 這是我以前的網站
請先看過這篇文章的說明--
[習題]給初學者的範例,多重欄位搜尋引擎 for GridView #1 (http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/25/3503.aspx)
為了解決這個問題,所以程式改寫如下:
HTML畫面
================================================================================
Title: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
Summary: <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
Article: <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Search~" /><br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="id" AllowPaging="True" PageSize="3"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="test_time" HeaderText="test_time" SortExpression="test_time" DataFormatString="{0:yyyy/MM/dd}" HtmlEncode="False" />
<asp:BoundField DataField="title" HeaderText="title" SortExpression="title" >
<ItemStyle Font-Bold="True" Font-Size="Medium" ForeColor="#004000" />
</asp:BoundField>
<asp:BoundField DataField="summary" HeaderText="summary" SortExpression="summary" />
<asp:BoundField DataField="article" HeaderText="article" SortExpression="article" >
<ItemStyle Font-Size="X-Small" ForeColor="Purple" />
</asp:BoundField>
<asp:BoundField DataField="author" HeaderText="author" SortExpression="author" />
</Columns>
<EmptyDataTemplate>
<strong><span style="font-size: 16pt; color: #ff0000">Sorry!!....NOTHING!!</span></strong>
</EmptyDataTemplate>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>">
註解: SqlDataSource裡面是空的!!
</asp:SqlDataSource>
以下是後置程式碼,本文提供VB / C#兩種版本給大家參考:
================================================================================
Code-Behind (for VB)
================================================================================
因為上方的HTML碼裡面,已經有一個「空的」 SqlDataSource,
裡面也有資料庫連線字串了,所以底下的 DBInit()只需要拼湊、「組合」出適當的 SQL指令即可。

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

================================================================================
Code-Behind (for C#)
================================================================================
因為上方的HTML碼裡面,已經有一個「空的」 SqlDataSource,
裡面也有資料庫連線字串了,所以底下的 DBInit()只需要拼湊、「組合」出適當的 SQL指令即可。

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

原文出處:我以前的網站 http://www.taconet.com.tw/mis2000_aspnet/
2010/6/7補充
關於本文,我已經重新整理一篇新的文章了,請看:
[文章下載]網站內的搜尋引擎,單一欄位與多重欄位的搜尋(自己手寫SqlDataSource與SelectParameter參數)
2010/3/5補充 --
黑暗執行緒的文章 , http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/03/02/or-operator-in-sql.aspx
上面的程式碼,可能遭受資料隱碼(SQL Injection)的攻擊,請各位小心。
關於SQL Injection的介紹與解法,可以參考黃忠成老師的大作:
LINQ - 對付 SQL Injection 的 "免費補洞策略"
一連串的 Mass SQL Injection 攻擊,讓我們回憶起數年前的 SQL Injection 攻擊,多年後的今天,我們仍深陷於同樣的危機中,本文詳述 SQL Injection 的歷史、肇因、解決及偵測方法,更為讀者們引介全新、更加安全的防堵 SQL Injection 策略。
2010/5/19補充:
本範例除了介紹 SqlDataSource的後置程式碼該怎麼撰寫之外
也介紹到 SelectParameter的寫法。
- SqlDataSource的 UpdateCommand與 UpdateParameter 、 DeleteCommand與DeleteParameter 的用法,請參考這個範例:
ADO.NET #3 (GridView + SqlDataSource)完全手寫、後置程式碼 ...
- 如果您想參考 SqlDataSource的 InsertCommand與 InserttParameter的寫法,請參考我的這篇文章:http://www.dotblogs.com.tw/mis2000lab/archive/2009/09/30/sqldatasource_insert_insertparameters_20090930.aspx
- 如果您想參考 SqlDataSource的 SelectCommand與 SelectParameter的寫法,請參考我的這篇文章:http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/25/3505.aspx
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。
