• 沒有找到結果。

.NET 資料提供者

N/A
N/A
Protected

Academic year: 2022

Share ".NET 資料提供者"

Copied!
71
0
0

加載中.... (立即查看全文)

全文

(1)

ASP.NET 網頁程式設計 (使用 C#)

講師︰唐士軒

CSIE NTU

(2)

.NET 資料提供者

z .NET 資料提供者為存取資料來源的一組類別 z .NET Data Provider

z SQL .NET Data Provider

z命名空間︰System.Data.SqlClient

z可用資料庫︰MS-SQL

z OLE DB .NET Data Provider

z命名空間︰System.Data.OleDb

z可用資料庫︰ Dbase、FoxPro、Excel、Access、Oracle、

Access…

z ODBC .NET Data Provider

z需至微軟網站另外下載

(3)

Connection 物件

z ADO.NET 的 Connection 物件用來連接資料來 源,代表使用者與資料來源間的連線

z 利用『連線字串』來描述所要連線的資料來源 z 連接 Access 資料庫連線字串格式

z Provider–Microsoft.Jet.OLEDB.4.0 z Data source–資料庫檔案所在路徑

z OleDbConnection 類別

z 常用屬性

zConnectionString–取得或設定連線字串 (可於建構式設定)

z 常用方法

zOpen–開啟資料庫連線

(4)

實例探討 sample3-a1 (1)

z 程式功能

z 建立與資料庫間的連線

z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

Response.Write("尚未連線..<br>");

string dataSource = Server.MapPath("member.mdb");

string connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=" +dataSource;

(5)

實例探討 sample3-a1 (2)

z 程式內容

OleDbConnection conn =

new OleDbConnection(connectionStr);

Response.Write("進行連線..<br>");

conn.Open();

Response.Write("連線成功..<br>");

conn.Close();

Response.Write("關閉連線..<br>");

}

(6)

Command 物件

z Command 物件可以用來執行所要對資料庫操 作的命令

z 建構式中可傳入 SQL 命令及 Connection 物件 z 常用方法

z ExecuteReader

z用來執行 Command 物件中的 SQL 查詢語法– SELECT

z取得資料後會回傳一個 DataReader 物件供使用者瀏覽資料

z ExecuteNonQuery

z用來執行 Command 物件中的 SQL 新增、刪除及修改語

法–INSERT、DELETE 及 UPDATE

(7)

DataReader 物件

z DataReader 物件可用來逐一取得資料表中的資料 列內容

z 可利用 物件["欄位名稱"] 來取得特定欄位資料 z 常用屬性

z FieldCount–取得資料總筆數

z 常用方法

z Read–讀取下一筆資料,已至檔案結尾回傳 false,

尚未到達檔案結尾回傳 true z Close–關閉釋放此物件資源

z GetName–取得欄位名稱

(8)

SQL 結構化查詢語言

zSQL 結構化查詢語言是一套標準的語言,

用以管理或存取資料庫 zSQL 主要包含二部份

zDML 資料處理語言

z包含 SELECT、INSERT、UPDATE 及 DELETE…

zDDL 資料定義語言

z包含 CREATE、DROP、ALTER 及 GRANT…

(9)

SQL 語法–SELECT

zSELECT 查詢命令可用來取得資料表中 的資料

z語法

zSELECT 欄位名稱1, 欄位名稱2, … FROM 資料表名稱 WHERE 條件式 ORDER BY 欄 位名稱 (字串需以單引號 ' 括住表示之)

z用法

zselect * from student

zselect id,name from student order by id desc

(10)

實例探討 sample3-a2 (1)

z 程式功能

z 會員管理系統

z 程式內容–WebForm1.aspx

private void loginBTN_Click(object sender, System.EventArgs e)

{

if(idTB.Text!= "" && pwTB.Text != "") {

if(check(idTB.Text, pwTB.Text))

Response.Redirect("WebForm2.aspx");

else

messageLB.Text = "帳號密碼輸入錯誤!!";

(11)

實例探討 sample3-a2 (2)

z程式內容–WebForm1.aspx

else

messageLB.Text = "帳號密碼不可空白!!";

}

private bool check(string id, string pw) {

string dataSource = Server.MapPath("member.mdb");

string connectionStr =

"Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=" +dataSource;

OleDbConnection conn = new

(12)

實例探討 sample3-a2 (3)

z 程式內容–WebForm1.aspx

string sqlStr = "select * from member " ;

sqlStr+= "where id='" + id + "' and pw='"+pw+"'";

OleDbCommand command = new OleDbCommand(sqlStr, conn);

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

bool flag = dataReader.Read();

dataReader.Close();

conn.Close();

return flag;

(13)

實例探討 sample3-a2 (4)

z程式內容–WebForm2.aspx

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("member.mdb");

string connectionStr =

"Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=" +dataSource;

OleDbConnection conn = new

OleDbConnection(connectionStr);

(14)

實例探討 sample3-a2 (5)

z 程式內容–WebForm2.aspx

string sqlStr = "select * from member ";

OleDbCommand command = new OleDbCommand(sqlStr, conn);

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

memberDG.DataSource = dataReader;

memberDG.DataBind();

dataReader.Close();

conn.Close();

}

(15)

課堂練習 sample3-b1

z資料庫內容

z建立一討論區資料表

z包含識別碼、主題、內容、發表者、瀏覽人 數及回覆人數六個欄位

z程式功能

z建立討論區主題列表畫面

z基本概念

z利用 select 語法取得資料表中資料

z需引用命名空間 System.Data.OleDb

(16)

SQL 語法–INSERT

zINSERT 新增命令用來新增一筆資料至指 定資料表中

z語法

zINSERT INTO 資料表名稱 ( 欄位名稱1, 欄位 名稱2, …) VALUES ('資料1', '資料2', …)

z用法

zINSERT INTO student(id, name) VALUES(3,

'Ives')

(17)

實例探討 sample3-a3 (1)

z程式功能

z新增會員帳號

z程式內容–WebForm1.aspx

private string connectionStr;

private OleDbConnection conn;

private OleDbCommand command;

(18)

實例探討 sample3-a3 (2)

z程式內容–WebForm1.aspx

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("member.mdb");

connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=" +dataSource;

conn = new OleDbConnection(connectionStr);

command = new OleDbCommand("", conn);

upDG();

}

(19)

實例探討 sample3-a3 (3)

z程式內容–WebForm1.aspx

private void upDG() {

command.CommandText = "select * from member";

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

memberDG.DataSource = dataReader;

memberDG.DataBind();

dataReader.Close();

conn.Close();

(20)

實例探討 sample3-a3 (4)

z 程式內容–WebForm1.aspx

private void addBTN_Click(object sender, System.EventArgs e)

{

if(idTB.Text!="" && pwTB.Text!="") {

command.CommandText = "insert into member(id, pw)values('"+ idTB.Text +"','"+ pwTB.Text +"')";

conn.Open();

command.ExecuteNonQuery();

conn.Close();

upDG();

(21)

課堂練習 sample3-b2

z程式功能

z延續 sample3-b1 加入一超連結至 WebForm2 z在 WebForm2 中設計發表新文章頁面

z基本概念

z利用 insert 語法新增文章至資料表中

z畫面只提供作者主題及文章內容輸入功能

(22)

SQL 語法–DELETE

zDELETE 刪除命令用來刪除資料表中的 指定資料

z語法

zDELETE FROM 資料表名稱 WHERE 條件式

z用法

zDELETE FROM student WHERE id = 3 AND

name = 'Ives'

(23)

刪除資料行

z刪除資料行提供刪除資料功能

z文字–欲顯示的文字 (全一致)

z文字欄位–欲顯示的資料內容 (繫結)

z用法

z當刪除資料行中的按鈕被點選時,會引發 DeleteCommand 事件

zDeleteCommand 事件會將選取到的資料列傳 入事件參數 e 當中

z可在該事件中撰寫修改資料庫資料相關程式

(24)

實例探討 sample3-a4 (1)

z程式功能

z刪除會員帳號

z程式內容

private string connectionStr;

private OleDbConnection conn;

private OleDbCommand command;

(25)

實例探討 sample3-a4 (2)

z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("member.mdb");

connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=" +dataSource;

conn = new OleDbConnection(connectionStr);

command = new OleDbCommand("", conn);

upDG();

}

(26)

實例探討 sample3-a4 (3)

z 程式內容

private void upDG() {

command.CommandText = "select * from member";

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

memberDG.DataSource = dataReader;

memberDG.DataBind();

dataReader.Close();

conn.Close();

}

(27)

實例探討 sample3-a4 (4)

z 程式內容

private void memberDG_DeleteCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {

command.CommandText =

"DELETE FROM member WHERE id ='" + e.Item.Cells[1].Text + "'";

conn.Open();

command.ExecuteNonQuery();

conn.Close();

upDG();

}

(28)

課堂練習 sample3-b3

z程式功能

z設計討論區刪除主題功能 z在每一資料列加入刪除按鈕 z設計全部刪除按鈕

z基本概念

z利用 delete 語法刪除資料

z利用刪除資料行建立刪除按鈕

(29)

SQL 語法–UPDATE

zUPDATE 更新命令用來修改資料表中的 資料

z語法

zUPDATE 資料表名稱 SET 欄位1 = 資料1, 欄 位2 = 資料2, … WHERE 條件式

z用法

zUPDATE student SET name = 'Bob' WHERE

id = 2

(30)

編輯、更新、取消資料行

z 刪除資料行提供刪除資料功能

z 編輯文字–設定編輯按鈕顯示文字 z 更新文字–設定更新按鈕顯示文字 z 取消文字–設定取消按鈕顯示文字

z 用法

z 當編輯按鈕被點選時,會引發 EditCommand 事件

z EditCommand 事件會將選取到的資料列傳入事件參數 e 當中 z 可將 DataGrid 的 EditItemIndex 屬性設定為該選取資料列的索

引值 e.Item.ItemIndex 並重新執行繫結動作

z 編輯和取消按鈕被點選時,會引發 UpdateCommand 及 CancelCommand 事件,可在該事件中撰寫對應處理程式

z 在編輯狀態下,可編輯資料行會在欄位中加入 TextBox 控制 項顯示該欄位資料,欲取得內容必須將該欄位該控制項轉換

(31)

實例探討 sample3-a5 (1)

z程式功能

z修改會員密碼

z程式內容

private string connectionStr;

private OleDbConnection conn;

private OleDbCommand command;

(32)

實例探討 sample3-a5 (2)

z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("member.mdb");

connectionStr =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +dataSource;

conn = new OleDbConnection(connectionStr);

command = new OleDbCommand("", conn);

(33)

實例探討 sample3-a5 (3)

z 程式內容

private void upDG() {

command.CommandText = "select * from member";

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

memberDG.DataSource = dataReader;

memberDG.DataBind();

dataReader.Close();

conn.Close();

(34)

實例探討 sample3-a5 (4)

z 程式內容

private void memberDG_EditCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {

memberDG.EditItemIndex = e.Item.ItemIndex;

upDG();

}

private void memberDG_CancelCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {

memberDG.EditItemIndex = -1;

upDG();

(35)

實例探討 sample3-a5 (5)

z 程式內容

private void memberDG_UpdateCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {

string id = e.Item.Cells[1].Text;

string pw = ((TextBox)e.Item.Cells[2].Controls[0]).Text;

command.CommandText = "UPDATE member SET pw='" + pw +

"' WHERE id='" + id +"'";

conn.Open();

command.ExecuteNonQuery();

conn.Close();

memberDG.EditItemIndex = -1;

upDG();

(36)

課堂練習 sample3-b4

z程式功能

z設計討論區修改主題功能

z將資料列主題設定為選取按鈕 z將選取項目顯示於文字方塊中 z提供一修改按鈕

z基本概念

z利用 Update 語法修改資料

z利用選取資料行建立選取按鈕

z利用 LinkButton 型別取得選取欄位文字內容

(37)

樣板資料行 (1)

zDataGrid 中的樣板資料行可加入任意的

控制項,允許我們自由的設計資料顯示

方式

(38)

樣板資料行 (2)

z在 DataGrid 控制項 中點選右鍵,可在

『編輯樣板』選項

中選取欲編輯的樣

板資料行

(39)

樣板資料行 (3)

z在樣板編輯視窗 中,從工具箱拖曳 LinkButton 控制項至 ItemTemplate 項目中 z將該 LinkButton 控

制項 CommandName

屬性設定為 select

(40)

樣板資料行 (4)

z點選 LinkButton 控制項的

(DataBindings) 屬 性,在自訂繫結 運算式視窗中,

加入繫結語法 DataBinder.Eval(

Container.DataItem,

“name")

(41)

樣板資料行 (5)

z同樣繫結樣板資 料行中的 Image 控制項

DataBinder.Eval

(Container.DataI

tem,"image")

(42)

實例探討 sample3-a6 (1)

z程式功能

z藝人簡介

z點選藝人名稱導至該藝人詳細資料頁面

z程式內容

z利用 DataGrid 中的樣板資料行加入 一

LinkButton 及 Image 控制項,用來連結藝人 詳細資料頁面及顯示藝人照片縮圖

z利用 FindControl 方法取得被選取資料列中

(43)

實例探討 sample3-a6 (2)

z 程式內容–WebForm1.aspx

private void Page_Load(object sender, System.EventArgs e)

{

string dataSource = Server.MapPath("member.mdb");

string connectionStr =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +dataSource;

OleDbConnection conn = new OleDbConnection(connectionStr);

string sqlStr = "select * from member " ; OleDbCommand command = new

OleDbCommand(sqlStr, conn);

(44)

實例探討 sample3-a6 (3)

z 程式內容–WebForm1.aspx

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

memberDG.DataSource = dataReader;

memberDG.DataBind();

dataReader.Close();

conn.Close();

}

private void memberDG_SelectedIndexChanged(object sender, System.EventArgs e)

{

Response.Redirect("WebForm2.aspx?name="+((LinkButton)mem

(45)

實例探討 sample3-a6 (4)

z 程式內容–WebForm2.aspx

private void Page_Load(object sender, System.EventArgs e) {

string name = Request.QueryString["name"];

string dataSource = Server.MapPath("member.mdb");

string connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +dataSource;

OleDbConnection conn = new OleDbConnection(connectionStr);

string sqlStr = "select * from member " ; sqlStr+= "where name='" + name + "'";

OleDbCommand command = new OleDbCommand(sqlStr, conn);

(46)

實例探討 sample3-a6 (5)

z 程式內容–WebForm2.aspx

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

if(dataReader.Read()) {

nameLB.Text = dataReader["name"].ToString();

countryLB.Text = dataReader["country"].ToString();

pictureIMG.ImageUrl = dataReader["image"].ToString();

}

dataReader.Close();

conn.Close();

(47)

課堂練習 sample3-b5

z程式功能

z更新瀏覽人數資料

z基本概念

z利用 DataGrid 中的樣板資料行加入 一 LinkButton 控制項

z點選該控制項時連接資料庫更新瀏覽人數欄 位資料

z利用 dataReader["欄位名稱"] 取得資料表中

資料並列印至網頁

(48)

DataList 控制項 (1)

zDataList 控制項可使用樣板與樣式定義的 格式來顯示資料

z常用屬性

zDataSource–設定資料來源

z常用方法

zDataBind–進行資料繫結動作

(49)

DataList 控制項 (2)

z在 DataList 控制項上點選右鍵,選擇欲

編輯的樣板區塊

(50)

DataList 控制項 (3)

z 項目樣板的編輯畫面中,

可以在 ItemTemplate 中 設定欲顯示的資料格式 z 可利用 HTML 控制項中

的 Table 控制項進行排版 動作

(最好將 Table 格式設定

好後,再拖曳至 DataList

的 ItemTemplate 項目中)

(51)

實例探討 sample3-a7 (1)

z 程式功能

z 購物清單

z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

if(!IsPostBack) {

string dataSource = Server.MapPath("db1.mdb");

string connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +dataSource;

OleDbConnection conn = new OleDbConnection(connectionStr);

string sqlStr = "select * from shopping " ;

OleDbCommand command = new OleDbCommand(sqlStr, conn);

(52)

實例探討 sample3-a7 (2)

z 程式內容

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

shoppingDL.DataSource = dataReader;

shoppingDL.DataBind();

dataReader.Close();

conn.Close();

}

(53)

實例探討 sample3-a7 (3)

z 程式內容

private void totalBTN_Click(object sender, System.EventArgs e) {

int total = 0;

foreach(DataListItem item in shoppingDL.Items) {

if(((CheckBox)item.FindControl("purchaseCB")).Checked) {

total +=

int.Parse(((Label)item.FindControl("costLB")).Text);

} }

totalLB.Text = total.ToString();

(54)

課堂練習 sample3-b6

z 程式功能

z 延續 sample3-b5

z 利用 DataList 控制項顯示文章內容

z 基本概念

z 利用 HTML 控制項中的 Table 控制項設定欲顯示畫面 z 在 Table 控制項中放置 Web 控制項中的 Label 控制

項,設定該 Label 控制項的資料繫結運算式,以顯示 資料表中資料

z 最後將 Table 控制項拖曳至 DataList 的 ItemTemplate 項目中

z 主程式需設定 DataList 的 DataSource 屬性及進行

(55)

常用樣板

zItemTemplate

z設計控制項中每一列資料的外觀

zAlternatingItemTemplate

z類似 ItemTemplate 樣板,此樣板為每隔一資 料列的方式呈現

zEditItemTemplate

z設計編輯模式資料列的外觀

zSelectedItemTemplate

z設計選取模式資料列的外觀

(56)

實例探討 sample3-a8 (1)

z 程式功能

z 購物清單

z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("db1.mdb");

string connectionStr =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

+dataSource;

conn = new OleDbConnection(connectionStr);

string sqlStr = "select * from shopping " ;

command = new OleDbCommand(sqlStr, conn);

if(!IsPostBack)

(57)

實例探討 sample3-a8 (2)

z 程式內容

private void upDL() {

conn.Open();

OleDbDataReader dataReader = command.ExecuteReader();

shoppingDL.DataSource = dataReader;

shoppingDL.DataBind();

dataReader.Close();

conn.Close();

}

private void shoppingDL_SelectedIndexChanged(object sender, System.EventArgs e)

{

(58)

課堂練習 sample3-b7

z 程式功能

z 利用 DataList 控制項設計學生成績表

z 以二行不同色彩方式顯示學生成績並提供編輯功能

z 基本概念

z 利用 HTML 控制項中的 Table 控制項設定欲顯示畫面 z 在 DataList 的 ItemTemplate 及

AlternatingItemTemplate 項目中置入不同樣式格式 z 設計 EditItemTemplate 項目

(59)

使用者控制項

z使用者控制項允許我們自訂所需的控制 項形式

z設計使用者控制項

z在方案總管專案名稱上點選右鍵來加入使用 者控制項

z可藉由 HTML 控制項中的 GridLayoutPanel 來進行絕對座標排版

z引用使用者控制項

z從方案總管中將使用者控制項拖曳至設計畫

面即可

(60)

加入使用者控制項 (1)

z在專案名稱上點選右鍵,即可加入一使

用者控制項

(61)

加入使用者控制項 (2)

z在加入新項目視窗中,選取 Web 使用者

控制項項目

(62)

加入使用者控制項 (3)

z成功加入後,方案總管中即會產生一副

檔名為 ascx 的使用者控制項檔案

(63)

實例探討 sample3-a9

z 程式功能

z 登入帳號密碼檢驗

z 程式內容–WebUserControl1.ascx

private void submitBTN_Click(object sender, System.EventArgs e) {

if(idTB.Text == "alice" && pwTB.Text == "alice") messageLB.Text = "登入成功";

else

messageLB.Text = "資料錯誤";

messageLB.Visible = true;

}

(64)

存取使用者控制項成員內容

z如果需要在引用的程式碼中,存取使用者 控制項的欄位屬性值,或是呼叫方法時,

必須在引用的程式碼中先宣告該使用者控 制

z宣告方式

zpublic 使用者控制項類別名 使用者控制項 ID;

zpublic WebUserControl1 myControl;

(65)

課堂練習 sample3-b8

z程式功能

z登入系統

z基本概念

z利用 UserControl 建立一登入控制項,允許使 用者設定資料庫、資料表及登入成功連結網頁 等資訊

z在主程式中設定上述參數資訊

(66)

其它控制項繫結

z部份具有 ListItem 型別 Items 屬性的控制 項,也可透過資料繫結的方式來設定

Items 屬性資料 z常用屬性

zDataSource–設定資料來源

zDataTextField–繫結 Text 欄位 zDataValueField–繫結 Value 欄位

z常用方法

zDataBind–進行資料繫結動作

(67)

實例探討 sample3-a10 (1)

z 程式功能 z 帳號資料 z 程式內容

private void Page_Load(object sender, System.EventArgs e) {

string dataSource = Server.MapPath("member.mdb");

connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +dataSource;

conn = new OleDbConnection(connectionStr);

command = new OleDbCommand("", conn);

if(!IsPostBack) upDG();

}

(68)

實例探討 sample3-a10 (2)

z 程式內容

private void upDG() {

conn.Open();

command.CommandText = "select * from member";

OleDbDataReader dataReader = command.ExecuteReader();

memberLB.DataSource = dataReader;

memberLB.DataTextField = "account";

memberLB.DataBind();

dataReader.Close();

(69)

實例探討 sample3-a10 (3)

z 程式內容

private void memberLB_SelectedIndexChanged(object sender, System.EventArgs e)

{

conn.Open();

command.CommandText = "select * from member where account='" + memberLB.SelectedItem.Text + "'";

OleDbDataReader dataReader = command.ExecuteReader();

if(dataReader.Read()) {

idLB.Text = dataReader["id"].ToString();

accountLB.Text = dataReader["account"].ToString();

pwLB.Text = dataReader["pw"].ToString();

}

dataReader.Close();

conn.Close();

(70)

自訂分頁

z較好的分頁設計,是只提取資料來源中 所需顯示的頁面資料

z將 AllowPaging 及 AllowCustomPage 設定為 true

z設定總資料筆數 VirtualItemCount 屬性

z 可利用 select top n 欄位名稱 from 資料表名

稱 where not 欄位名稱 in (select top m 欄位名

稱 from 資料表名稱) 取得第 m 筆資料之後

的 n 筆資料

(71)

課堂練習 sample3-b9

z程式功能

z討論區列表 z分頁查詢功能

z基本概念

z透過 e.NewPageIndex * PageSize 來求得需取得 的資料位置

z利用 select 來取得某頁面資料

參考文獻

相關文件

新角色 新角色 新角色 新角色: : : : 學習促進者 學習促進者 學習促進者 學習促進者 提供參與機會 提供參與機會 提供參與機會 提供參與機會 引導而不操控

private void Page_Load(object sender, System.EventArgs e) {. string dataSource

通用類別(Generic Classes) - Code Reuse 的另一種發揮.. -

private void closeBTN_Click(object sender, System.EventArgs

Session.Add(string name, object value) z將新項目加入 Session 當中。..

… 點選 LinkButton 控制 項的 (DataBindings) 屬性,在自訂繫結

private void answerLB Click(object sender private void answerLB_Click(object sender,. System.EventArgs

5/11 Network Address Translation and Virtual Private Network. 5/18 System configuration and