本文是一系列的文章,建議您依照順序來觀賞:
請看過前面的文章後,再繼續看下去:
跟上一篇文章差不多,我們以 DropDownList為例。
繼續討論 DataSet裡面的 DataTable,這次介紹 Column.....
本文會真正使用到 DataBinding,寫法單純多了,
不像上一篇文章這麼繁瑣
我們繼續看看這個例子。
下面的範例,可以放在本書的 14.3節,作為課後補充!
對於 ADO.NET / DataSet不熟悉的朋友,請看上一篇文章 or 本書 13與14兩章。
因為這個範例是給本書讀者,作為課後的補充。 事先會假設讀者已經有底子了
=========================================================================
HTML畫面的原始碼,只有一個 DropDownList控制項而已:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</div>
</form>
畫面上只有一個 DropDownList控制項,為何能連結資料庫?撈出許多資料?
怎麼做到的?......................方法很多,但我們採用 DataSet的DataTable來作。

=========================================================================
後置程式碼(for C#):
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection("資料庫的連結字串");
//Conn.Open(); //第一、連結資料庫
SqlDataAdapter da = new SqlDataAdapter("select top 10 id,title,summary from test order by id", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test"); //第二、執行SQL指令,取出資料
//註解:執行SQL指令之後,把資料庫撈出來的結果,交由畫面上 DropDownList控制項來呈現。
DropDownList1.DataValueField = "id"; //在此輸入的是資料表的欄位名稱
DropDownList1.DataTextField = "title"; //在此輸入的是資料表的欄位名稱
DropDownList1.DataSource = ds.Tables["test"].DefaultView;
DropDownList1.DataBind();
//Conn.Close(); //第四、關閉資料庫的連接與相關資源
}
後置程式碼(for VB):
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = New SqlConnection("資料庫的連結字串")
'Conn.Open(); '--第一、連結資料庫
Dim da As SqlDataAdapter = New SqlDataAdapter("select top 30 id,title,summary from test order by id", Conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "test") '--第二、執行SQL指令,取出資料
'--註解:執行SQL指令之後,把資料庫撈出來的結果,交由畫面上 DropDownList控制項來呈現。
DropDownList1.DataValueField = "id" '--在此輸入的是資料表的欄位名稱
DropDownList1.DataTextField = "title" '--在此輸入的是資料表的欄位名稱
'************** DataBinding **********************
DropDownList1.DataSource = ds.Tables("test").DefaultView
DropDownList1.DataBind()
'Conn.Close() '--第四、關閉資料庫的連接與相關資源
End Sub
上面的範例,有出現 DataBinding的動作,
比較看看,跟上一篇文章的作法,有何差異?
上面的 DropDownList控制項,請看本書 3.7節,我寫了很多範例,很詳細。
DropDownList學會了,其他類似的 ListBox / CheckBox.....都大同小異。 學通了,就能舉一反三
DataAdapter會自動開啟、關閉資料庫的連線,所以我們不用手動去控制他。請看本書 14.3節,在此不贅述。
======== 第二種作法 =====================================================================
上面的後置程式碼( for C#),您也可以寫成下面這樣
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection("資料庫的連結字串");
//Conn.Open(); //第一、連結資料庫
SqlDataAdapter da = new SqlDataAdapter("select top 10 id,title,summary from test order by id", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test"); //第二、執行SQL指令,取出資料
//註解:執行SQL指令之後,把資料庫撈出來的結果,交由畫面上 DropDownList控制項來呈現。
//****** 第二種寫法 *********************
DropDownList1.DataValueField = ds.Tables["test"].Columns[0].ToString(); //資料表的欄位名稱
DropDownList1.DataTextField = ds.Tables["test"].Columns[1].ToString(); //資料表的欄位名稱
//****************************************
DropDownList1.DataSource = ds.Tables["test"].DefaultView;
DropDownList1.DataBind();
//Conn.Close(); //第四、關閉資料庫的連接與相關資源
}
後置程式碼( for VB)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = New SqlConnection("資料庫的連結字串")
'Conn.Open(); '第一、連結資料庫
Dim da As SqlDataAdapter = New SqlDataAdapter("select top 30 id,title,summary from test order by id", Conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "test") '第二、執行SQL指令,取出資料
'註解:執行SQL指令之後,把資料庫撈出來的結果,交由畫面上 DropDownList控制項來呈現。
'****** 第二種寫法 *********************
DropDownList1.DataValueField = ds.Tables("test").Columns(0).ToString() '--資料表的[欄位名稱]
DropDownList1.DataTextField = ds.Tables("test").Columns(1).ToString() '--資料表的[欄位名稱]
'****************************************
DropDownList1.DataSource = ds.Tables("test").DefaultView
DropDownList1.DataBind()
'Conn.Close() '第四、關閉資料庫的連接與相關資源
End Sub
上面的範例,有出現 DataBinding的動作,
比較看看,跟上一篇文章的作法,有何差異?
上面的程式(第二種作法),重點解說如下:
- Row ====>列,橫的一列,類似資料表(Table)裡面一筆一筆的紀錄!
- Column==>行,直的一行。就是資料表裡面的「欄位名稱」!
Column 1 / Column 2 / Column 3 .......
欄位名稱1 / 欄位名稱 2 / 欄位名稱 3 .......
----------------------------------------------------------------
Row 1 1111111 張小強 班長 .......
Row 2 2222222 馬小九 副班長 .......
Row 3 3333333 藍小丁 風紀股長 .......
當然, DropDownList + SqlDataSource,只要設定幾下也能有相同結果出來。
這個範例是另外一種寫法,僅供各位參考。
您也可以看看這篇文章,這個範例,我們用 DataSourceID來作資料繫結
[習題]兩個SqlDataSource,共用一個 GridView
作者出版的書籍(ASP.NET專題實務 II -- 範例集與4.0新功能 / 文魁出版。
是市面上唯一以專文介紹DataBinding的書籍)
本系列的下一篇文章:DataBinding?資料繫結?資料綁定? #4--繫結運算式(DataSet / DataReader)
............................. 寫信給我,mis2000lab (at) yahoo.com.台灣.........................................................
網頁上的補充範例(售後服務),不一定能立即提供 VB / C#語法(看時間夠不夠寫,請不要跟我們要)。
但書本上面的範例,一定有 VB / C#雙語法給您學習。 請看我們的「售後服務」範圍(嚴格認定)。
你要記得,永遠要愉快地多給別人,少從別人那裏拿取。
書籍是人類進步的階梯。
-- 馬克西姆 . 高爾基
防範SQL Injection / XSS攻擊,請看:ASP.NET安全寫作 資料來源 -- TWISC@NTUST網路應用安全知識庫
(1). 我是初學者、要從頭學起、學習 [各種]控制項,瞭解ASP.NET生命週期與變革,請上這一班:
*** 班班額滿,切莫遲疑!****

(2). 我是 [現役]的 ASP/ PHP / JSP設計師,我「不想」學精靈與大型控制項。您適合這一班
(請來信 預 約)。 附贈 上/下兩集,雙教材!

(3). Will 保哥,大名鼎鼎的微軟研討會講師。ASP.NET MVC -- 六週實戰,保證過癮!

(4). Allen Kuo -- ASP.NET「物件導向(OOP)」班 -- 打通任督二脈,晉升高手行列

(5). KK Bruce 陳傳興 -- ASP.NET Web API 四週實戰

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣.........................................................
|

|
ASP.NET 4.5 專題實務(松崗出版)

榮獲 PChome 電腦類 2011 / 2012年度 暢銷書
(上集)上市半年熱銷 2,500本,緊急再版
|
|
上 / 下兩集合購。 優惠價1,199元(免郵資,比PChome便宜)
上/下兩集超過2,000頁,堪稱國內 [最詳盡]的 ASP.NET 入門範例、實戰教學。
|
|
上集( .NET 4.0版)全新改寫。範例增加166%,內容增加135%。上市以來,熱銷七刷 (2012/7月)!
下集 為 VB、C# 「雙語法」版本,物超所值!
|
|
南無普光佛 南無普明佛 南無普淨佛 南無多摩羅跋栴檀香佛 南無栴檀光佛 南無摩尼幢佛 南無歡喜藏摩尼寶積佛 南無一切世間樂見上大精進佛 南無摩尼幢燈光佛 南無慧炬照佛 南無海德光明佛 南無金剛牢強普散金光佛 南無大強精進勇猛佛 南無大悲光佛 南無慈力王佛 南無慈藏佛 南無栴檀窟莊嚴勝佛 南無賢善首佛 南無善意佛 南無廣莊嚴王佛 南無金華光佛 南無寶蓋照空自在力王佛 南無虛空寶華光佛 南無琉璃莊嚴王佛 南無普現色身光佛 南無不動智光佛 南無降伏眾魔王佛 南無才光明佛 南無智慧勝佛 南無彌勒仙光佛 南無善寂月音妙尊智王佛 南無世淨光佛 南無龍種上尊王佛 南無日月光佛 南無日月珠光佛 南無慧幢勝王佛 南無師子吼自在力王佛 南無妙音勝佛 南無常光幢佛 南無觀世燈佛 南無慧威燈王佛 南無法勝王佛 南無須彌光佛 南無須曼那華光佛 南無優曇鉢羅華殊勝王佛 南無大慧力王佛 南無阿閦毗歡喜光佛 南無無量音聲王佛 南無才光佛 南無金海光佛 南無山海慧自在通王佛 南無大通光佛 南無一切法常滿王佛 南無釋迦牟尼佛 南無金剛不壞佛 南無寶光佛 南無龍尊王佛 南無精進軍佛 南無精進喜佛 南無寶火佛 南無寶月光佛 南無現無愚佛 南無寶月佛 南無無垢佛 南無離垢佛 南無勇施佛 南無清淨佛 南無清淨施佛 南無娑留那佛 南無水天佛 南無堅德佛 南無栴檀功德佛 南無無量掬光佛 南無光德佛 南無無憂德佛 南無那羅延佛 南無功德華佛 南無蓮華光遊戲神通佛 南無財功德佛 南無德念佛 南無善名稱功德佛 南無紅燄帝幢王佛 南無善遊步功德佛 南無鬪戰勝佛 南無善遊步佛 南無周匝莊嚴功德佛 南無寶華遊步佛 南無寶蓮華善住娑羅樹王佛 南無法界藏身阿彌陀佛 |
