這是備份網站。主網站位於http://www.dotblogs.com.tw/mis2000lab/
MIS2000 Lab's ASP.NET & Linux (Trad. Chinese 正體中文;Big5)。這個網站,是我們(MIS2000 Lab.資訊工作室)多年教學的實際心得與上課範例,有ASP.NET程式設計,也有Linux的相關文件。
編輯。
您也可以直接參觀主網站
MIS2000 Lab. is MVP 2008-2017/7/1 for ASP/ASP.NET.
2008年2月1日 星期五
自己動手寫的版本 ---- 網站的 Master/Detail程式
Master的程式 http://www.taconet.com.tw/mis2000_aspnet/vs2005_case.htm#333
相當於購物網站的首頁
Detail的程式 http://www.taconet.com.tw/mis2000_aspnet/vs2005_case.htm#222
點選任何一個產品,就會看見這個產品的明細、內容、價格....等等
這種功能,很常見、寫程式的人都該學會~
本文出處 http://www.taconet.com.tw/mis2000_aspnet
SqlDataReader 同時執行多個SQL指令!
但缺點就是:ASP.NET 的SqlDataReader不像RecordSet,可以在同一個資料庫連線裡面,重複開啟「多個」RecordSet。
Microsoft說:「每次在 SqlConnection 上只能有一個 SqlDataReader 開啟。」
所以,當DataReader尚未關閉之前,是不能連續使用第二個DataReader的.....
這實在很困擾。因為在以前的ASP時代,一個資料庫連線裡面,搞不好同時開好幾個RecordSet來工作呢!
解決方法有兩個:
第一,ASP.NET 2.0搭配MS SQL 2005的話,可以解決。請看微軟的官方文件「MultipleActiveResultSets 屬性」,請將這屬性,寫在資料庫連線字串(ConnectionString)裡面。
第二,就是SqlDataReader的「.NextResult()」方法,請看這篇文章的說明(簡體中文網站)。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/
User Control -- 使用者自訂控制項
用法與ASP.NET 1.X差不多~
1. User Control 的副檔名,務必為 .ascx。
2. 只要是重複使用的程式碼、或是元件、控制項,都可以寫在 User Control裡面,在「主程式的畫面」上(附檔名 .aspx)重複使用。
3. 而且User Control 的引用,務必寫在主程式(副檔名 .aspx)的<form
runat="server">......</form
>裡面
4. User Control 就連控制項的tag名稱(如下圖的<Acme:Address),都可以自己命名喔!
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#14_userc
DataReader的標準範例 for ASP.NET 2.0
1. Try....Catch....Finally版
2. Using....End Using版
很多時候,用手寫的方式,以 DataReader來列出資料,又快又好用。
相信大家都用的到。
以下是我在微軟SDK文件找到的範本,寫得很標準~這裡提供兩個版本
VS 2005 or VS 2008 一體適用!
第一個版本是採用「 Try....Catch....Finally」等偵錯過程(VB.NET語法解說),抄起來放在手邊一定用的到。
不瞞您說,我衷心推薦微軟這份官方文件(資料和ADO.NET),是介紹最好、最淺顯的文章了!
'----自己寫的----
Imports System
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'=======微軟SDK文件的範本=======
Dim Conn As SqlConnection = New SqlConnection '----上面已經事先寫好 Imports System.Web.Configuration ----
Conn.ConnectionString = WebConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString
Dim dr As SqlDataReader = Nothing
Dim cmd As SqlCommand
cmd = New SqlCommand("select id,test_time,summary,author from test", Conn)
Try
Conn.Open() '---- 這時候才連結DB
dr = cmd.ExecuteReader() '---- 這時候執行SQL指令,取出資料
GridView1.DataSource = dr
GridView1.DataBind()
Catch ex As Exception '---- 如果程式有錯誤或是例外狀況,將執行這一段
Response.Write("Error Message---- " + ex.ToString() + "
")
Finally '---- Always call Close when done reading.
If Not (dr Is Nothing) Then
cmd.Cancel()
dr.Close()
End If
If (Conn.State = ConnectionState.Open) Then
Conn.Close()
Conn.Dispose()
End If
End Try
End Sub
End Class
第二個版本是採用「Using....End Using」(VB.NET語法解說),抄起來放在手邊一定用的到。 資料來源:微軟MSDN網站--IDataReader 介面
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#10_datareader
雙重關聯的下拉式選單,例如:郵遞區號
常常有人在問:這種功能要怎麼作?
例如:選擇「縣市」名稱後,就會自動跳出相關的「鄉鎮市區」...... or 郵遞區號
以前很難做到的功能,現在透過Visual Studio 2005(VS 2005)或是VS 2008
只要 30秒就能完成,而且完全不需要寫程式。
先做好兩個ListBox控制項,各自搭配一個 SqlDataSource。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#9_double_down
Repeater控制項的用法
Repeater的作法很簡單,就是讓我們免除「自己寫迴圈」,就能重複列出資料庫裡面的內容...... 說真的,這功能還真的不怎麼樣~~囧rz......
抱歉喔!這個BLOG我不太會用,HTML碼怎麼轉都轉不出來,請到我網站去看吧。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#8_repeater
多重欄位的搜尋引擎(GridView + 分頁)
就有提過,概念完全相同。同時要搜尋多個欄位,是有一點小訣竅的~
比較大的差異,是因為ASP.NET 2.0新增的 SqlDataSource是一個精簡版的資料存取功能,雖然比傳統 ADO.NET更簡便好用,但很多執行細節,也因為精靈帶著我們一步一步走,而讓初學者有點迷惘,甚至遇見問題無法修改。
作法滿簡單的,但初學者只會使用現成工作、只會用精靈來完成.....遇見狀況就不知道該如何下手解決了。
這個問題,是讓初學者必須開始「思考」ASP.NET背後是怎麼運作的! ..........完整的程式碼,請看這裡!
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#6_search
驗證控制項(Validator)搭配當地語系(Localization)
ASP.NET 2.0 的 驗證控制項(Validator),用法跟以前的1.x版沒什麼不同。請大家放心~
比較特別的是,台灣的ASP.NET中文書籍,較少提到 Localization的部份。
可是目前撰寫的系統,要應付全球這麼多國的語系,不可能不提到Localization。以我為例,一套系統要給台灣與中國大陸使用,中文就會分成「正體中文」與「簡體中文」兩個版本了。
除了上面的範例之外,我們常用的驗證控制項,也可以搭配Localization,讓驗證控制項的「錯誤訊息(ErrorMessage)」屬性,變成各國語言的文字。
作法跟上一個範例一樣,是透過資源檔( .resx檔)來管理各國語言的內容。如果另一個語系是英文(en),檔名為 xxxxx.en.resx。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#5_Vali
http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/06/3804.aspx
TreeView、Menu、SiteMapPath ---- (當地語系,Localization)
可是目前撰寫的系統,要應付全球這麼多國的語系,不可能不提到Localization。以我為例,一套系統要給台灣與中國大陸使用,中文就會分成「正體中文」與「簡體中文」兩個版本了。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#4_local
http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/06/3803.aspx
TreeView、Menu、SiteMapPath ---- (權限控管,搭配Login控制項)
(不同的帳號 Login,會看見不同的功能列表&URL)
但是,要搭配ASP.NET 2.0的 Login控制項,依照不同帳號、不同權限,看到不同的導覽列。
就需要一點小技巧。
下面的範例,分成三種權限,最高等級 Admin,依次為 Manager與 User。
執行結果:
第一張圖,這位使用者的權限較高,屬於「Admin」管理員,能看見所有節點。 Menu / SiteMapPath / TreeView三種都可以被我們控制。
第二張圖,這位使用者權限最低,屬於「User」基層用戶,只能看見某一部份。
=========================================================
要做到這樣的功能,又不寫程式。
需要修改兩個檔案。市面上幾本書都沒有提到這點,所以我野人獻曝一下。
1. 首先,加入Login控制項,負責帳號、密碼的管理(VS 2005基本功能。市面上每本書都有提到,這裡就不說了)。
2. 在 Web.Config檔(VS 2005會協助產生此檔)裡面,自己手動寫入這些文字:
每一個目錄、每一個網頁檔案,都要「個別」地設定它的權限,讓不同的Role(群組、角色)的使用者登入。...設定有點煩~
3. 搭配 TreeView / Menu / SiteMappath,必須搭配一個XML檔案(Web.sitemap,VS 2005會協助產生此檔。市面上每本書都有提到,這裡就不說了)。
重點在於每一個節點,最後面的「roles = 」這個設定,要跟上一張圖的設定互相搭配!這個檔案,也要自己手動進去修改:
雖然自己手動修改這些設定檔,有點煩人。但,至少不用寫程式來處理,也還OK。......
另外,可以參考中國大陸的網站,這篇文章(http://book.csdn.net/bookfiles/469/10046916551.shtml)也是介紹類似的東西。
本文出處:http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#3_treeView
http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/06/3802.aspx
密技第二份,GridView合併儲存格
這功能很多人在問,應該也有很多解答了。
不過,大家交流一下也無妨。
以下是我在微軟MSDN論壇的一些討論,都有我自己改寫的程式碼。僅供大家參考。
1. GridView合併儲存格
2. GridView合併儲存格之後,處理「隔行變底色(AlternatingRowStyle)」的問題
http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#1_gridview
「大腸包小腸」,GridView裡面包裹另外一個小的GridView
用來製作「Master-Detail 的功能」~
ASP.NET 2.0 的 GridView,取代以前1.x版的DataGrid
微軟的文章(逐步解說:Web 網頁中的基本資料存取),圖文並茂,把GridView很詳細地解說一次。您一定要看看。
http://www.taconet.com.tw/mis2000_aspnet/ASP_NET20.htm#1_gridview