FireFox 線上影片下載套件 Video DownloadHelper

FireFox 線上影片下載套件 Video DownloadHelper

目前為超好用的影片下載器,幾乎都可以下載。
缺點就是必須使用FireFox才有

連結

JQUERY Shadowbox.js燈箱效果 Bug For IE瀏覽器

最近就在小編的後台管理系統要完成時,發生了悲劇。
小編我習慣使用Chrome來上網,也會使用火狐來測試,之後才會用IE測試
因為IE版本最多,目前WindowsXP最高可以到8.0的版本
所以我就維持在8.0。
就在我使用IE8.0的時候,居然登入後無法使用。
真的是害我整個傻眼。












Javascript 取得目前網址 相關資訊

假設現在我有個網頁,網址是:http://functionlab.org:80/tools/tcpproxy.php?user=FUNction#showscript
如果這網頁上有以下JavaScript 程式碼



ASP.NET session 變數的用法

建置網站時,一定會使用的程式語法
也就是 session。

當瀏覽器關閉時,該變數也會跟著消失。

ASP.Net 事件發生先後順序

以下說明

C#控件縮寫,ASP.NET各類空間縮寫大全 「命名」

對於程式設計師來說,命名原則是很重要的,
並且在更多人同時開發一個程式時,就更必須要遵守該原則
才能有效率的開發程式

中華電信 HiHosting 資料庫連線方法

筆者一定要記錄一下,因客戶之前ASP舊網站是使用中華電信的
所以就必須沿用,已聯絡中華電信將主機再安裝升級為ASP.NET 4.0版本
已便開發的程式有辦法執行。

對AJAX貢獻度很大的一篇討論

http://ithelp.ithome.com.tw/question/10051046

AJAX 與 ASP.Net PostBack

自ASP"升級"成為ASP.NET後,出現了一個ASP所沒有的名詞:PostBack,而PostBack讓開發WebApp變的簡單了,但卻也讓Server端的Loading變得重了。

ASP.NET C# 註冊session的方法

//建立
Session.Add("sessionName", "123");
//or
Session["sessionName"] = "123";
//取值
string s = Session["sessionName"].ToString();
//移除
Session.Remove("sessionName");

Session和Cookie的區別

Session和Cookie的區別

具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在服務器端保持狀態的方案。同時我們也看到,由於採用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制來達到保存標識的目的,但實際上它還有其他選擇。

Javascript 刷新頁面的幾種方法

Javascript刷新頁面的幾種方法:
1   history.go(0)
2   location.reload()
3   location=location
4   location.assign(location)
5   document.execCommand('Refresh')
6   window.navigate(location)
7   location.replace(location)
8   document.URL=location.href



ASP.NET C# 在字串中處理逸出字元的小技巧

[本文引用自 ASP.NET 2Share]
和 VB 不同, C# 在字串裡面對於反斜線符號有其特殊的定義, 因為它是所謂的逸出字元 (Escape Character)。所以你可以在字串中使用 \n 代表換行符號、使用 \t 代表 TAB 符號等等。
然而, 如果你要在字串中表示資料夾路徑的話, 就會比較麻煩了, 例如:

基礎程式字典查詢網站 推薦

小編這次在此介紹,大家應該都會需要查詢一些語法字典,
並不是學習怎麼使用,而是忘了要打甚麼,畢竟網頁使用到的語言實在是太多種了
比如說PHP、ASP.NET、JAVASCRIPT、VB.NET等等,一定會很需要這類的查詢書或網站
但是書本往往不可能隨時攜帶在身上嘛!所以以下網站又很重要。

網頁程式語言的「註解方法」

今天來介紹,這個很常使用到的程式註解程式碼,
因為每個程式語言的註解功能不同,所以我在此做些紀錄,並且讓大家更清楚分明白。

Access 特性

Access

ASP.NET錯誤:具有潛在危險Request.Form 的值已從用戶端偵測到(解決方法)

在Asp.Net的網站操作中,會產生『具有潛在危險 Request.Form 的值已從用戶端偵測到』此錯誤訊息之原因,通常是在PostBack後系統偵測到頁面中存在某些文字輸入欄位如TextBox、Html編輯器(如FckEditor)等文字內容中存在Html語法,因而判斷為惡意程式碼,如此來避免駭客的惡意攻擊。

ASP.NET 錯誤: INSERT INTO 語法錯誤

小編今天再寫一個檔案新增紀錄的程式
結果在執行SQL的部分出現錯誤
各位看一下,真的很神奇!

ASP.NET C#常用語法

參考如下

ASP.NET 防止兩次表單送出, 並且驗證不失效 使用JQUERY方法

在ASP.NET的學習歷程,真的跟PHP很不一樣
一直遇到問題,超無言的啦
就連個表單送出都遇到問題

後來終於找到的最方便的解決方法:

JQUERY 把畫面Hold住的方法

範例如下
http://jquery.malsup.com/block/#demos

ASP.NET 錯誤:無法寫入資料庫或已經開啓,沒有寫入權限

最近將WindowsXP的網站資料 移轉到 Windows7繼續做
發現不少支援問題,與安全性問題,
如這次遇到的問題就比較屬於Windows7的安全性問題,
因為他的安全性較WindowsXP高,所以在IIS的部分必須
在另外開啓權限的問題。

ASP.NET 錯誤:因為網頁伺服器上的[ISAPI 及CGI 限制] 清單設定,而無法提供您要求的網頁。

因為公司是WindowsXP IIS6,做完之後帶回家繼續做,
但環境是不同,我在家裡則是Windows7 IIS7.5。
當移轉時,發現了不少問題,這個就是其中一個問題

ASP.NET 錯誤:IErrorInfo.GetDescription 因為 E_FAIL(0x80004005) 而失敗。

今天遇到了一個問題,就是因為資料表的名稱,使用了系統使用的名稱,
所以造成資料在抓取的時候,重複了,造成錯誤。

解決的方法,很明白,就是改變資料表的名稱即可

網站中的[目錄列]的建議作法

小編之前做過,但因為沒有筆記起來
所以當要做的時候,又在想說,是否要使用伺服器語言來做判斷
現在是在哪一個目錄內(如PHP 或 ASP.NET)

其實不是,之前做過的那個正確的方法,在今天才又想起來

網站 「虛擬主機」介紹,租用前做好功課

此篇為虛擬空間介紹,網頁設計的工作 直到今天,
也使用過不少客戶租用的虛擬空間,相信有些朋友不知道該租哪家空間好,
我這裡就來介紹幾個我使用過的空間吧 !

JQUERY 燈箱效果 精選

shadowbox
官方網站

ASP.NET AJAX JSON 非同步載入資料

為了完成我的程式,需要找一些功能, 因為對ASP.NET還不算很熟悉,必須找一些範例來熟悉他。 以下是找到的範例,將內容簡單修改。

ASP.NET 子視窗呼叫 父視窗 Javascript Function的方法

最近在研究的一些應用,想好久,終於想到大概的用法
利用JQUERY的燈箱效果開啟子視窗,之後在子視窗按下按鈕觸發
父視窗的Javascript事件並帶參數,接著透過該事件使用Jquery append方法,
將資料帶到父視窗的某個tab內

網頁[線上文字編輯器]推薦

UEditor

已目前來說,看起來還不錯的文字編輯器,筆者目前還未使用過,
但在新網站會加入考慮,他還內建了插入代碼語言的功能,不必在花時間自己改寫
算是蠻貼心的,介面也不錯!功能算鰻齊全的
至於沒有實際使用過 就不清楚了。

Mac Book Pro 13" 的散熱問題處理

一般來說,應該只有少數的人不覺得 MAC PRO 手放在鍵盤上,手掌的位置,不覺得熱
可能是因為只是上上網,並非執行需要高效能的軟體,所以不太會熱。
還有就是在冷氣房下也不會感覺熱,但電費畢竟是很貴的!自己付的話,還是必須省電
在睡前才把冷氣打開 好睡覺,不然平常也開著的話,那收到的電費可真不得了。

Mac Book Pro 13" 使用Cooler Master Notepal Infinite EVO 散熱墊

前陣子測試一般的散熱墊,包括一個大風扇Cooler Master
與可移動兩個風扇位置的散熱墊,效果都跟墊高其實差不會太多
在網路上逛了逛,看到一款側邊2顆渦輪風扇,還有風量輸出的位置也有
作規劃,想說不然來試一試。說不定就可能找到適合的散熱墊

ASP.NET 動態新增控制項(textbox)的方法

在ASP.NET上的動態產生控制項的方法
是蠻直接的,不需要再透過JQUERY之類的,像PHP那樣需要再透過JQUERY產生

ASP.NET 動態產生表格(table)的方法

在ASP.NET上的動態產生表格的方法
是蠻直接的,不需要再透過JQUERY之類的,像PHP那樣需要再透過JQUERY產生

ASP.NET 使用 JQuery : PageMethods方法(button) 讓 客戶端 呼叫「伺服器端方法」

突然想到,再加上一些運用,也可以。就是原本的 js 改成使用jquery方法,
另外這個範例是使用到主版頁面(.master)。所以基本上改變的地方在 .js檔案
必須注意需引入 jquey元件。

 範例說明如下

ASP.NET 使用PageMethods方法(button) 讓 客戶端 呼叫「伺服器端方法」

研究了上一個案例的時候,發現想要把 textbox 的tab事件改成 button的onclick事件,
結果竟然會失敗,於是突然想到之前好像有人說VB.NET的按鈕事件建議設定為 mousedown 會比較好 果真用這個事件就可以了。 範例說明如下

Mac Book Pro 13" 使用CoolerMaster CM Notepal U2散熱墊與純高度墊高 比較

前陣子蠻困擾的問題,就是覺得Mac Book Pro 咻咻啦!(熱熱)
其實他熱熱的不要影響我手放在上面的感覺就沒事,可是偏偏
放久了就覺得手不是那麼的舒服。

而且網路上也有很多朋友說,墊高讓下面空氣流通就好,
不需要用散熱墊,因為鋁製嘛,本身又是導熱的材質。

ASP.NET 使用PageMethods方法(textbox) 讓 客戶端 呼叫「伺服器端方法」

類似AJAX的效果,對這部分還在摸索中...
這部分的範例為參考別的教學網站而來,有些機制真的還蠻麻煩的。
不過我想應該只是現在不熟悉吧!

Apple MacBook Pro 開箱分享(轉貼)


做為一個3C部落客,任何的商品都要接觸,即便對於該產品熟識度不足,但依舊要秉持冒險家的精神,因為你永遠不知道這個商品究竟是不是你所想要的,所以測試再測試是必要的過程。





Mac Book 手放置處 的垂直角 感到刺痛的解決方法

說來有點瞎,在01上發問該問題後,
一些人都說沒這問題,也有人說13吋有這問題,15吋就沒這問題了。
然後有一個人回答得比較勁爆,他PO了一個影片出來

偵測出 ASP.NET 設定沒有套用到整合式 Managed 管線模式

公司是用 WindowsXP 所以是 IIS6,
而回到家是 Windows 7 也就是 IIS7
當執行了移轉的 Web.config 時,就會造成該問題

AdWords 客服電話 與 EMail / Adsense 客戶服務網站

全球電話客服資訊
需要 AdWords 帳戶方面的協助嗎?交給我們就對了!您可以在下面查看您所在國家/地區專用的電話號碼,或是直接從下方的下拉式選單選取其他國家/地區。透過市話可免費撥打,但使用手機撥出可能就要付費 (視您的通訊業者而定)。為了找出您的帳戶,我們會需要您提供自己的 10 碼客戶編號,請您在撥電話前先準備好這項資訊。登入帳戶後,您的客戶編號會列在任何 AdWords 頁面的上方,就在電子郵件地址旁邊。

ASP.NET 呼叫 MsgBox 的5種方法

這部分 ASP.NET 跟 PHP 比較不同的地方就是,
無法像PHP一樣直接加上 PHP結束標籤 在接上 Javascript 標籤 就可以使用 javascript
的 alert("訊息內容"),而在 ASP.NET 必須用別的方式,因為他把伺服器端與客戶端分得很清楚。

下面開始說明,為兩個檔案,分為網頁檔 與 程式檔,並有5個按鈕分別觸發的事件

ASP.NET 資料庫連線方式

前陣子寫的程式,使用MS SQL 2008
因為目前還不確定客戶原本使用的空間,是使用哪種資料庫
一般來說 Linux 提供的 PHP 資料庫 會比較便宜,
ASP.NET 的 Windows 資料庫 會比較昂貴,而且
要使用 MS SQL資料庫,就必須每月在付5000的虛擬主機商

IE8 無法使用 Html 屬性會造成圖片無法顯示

小編今天接到客戶的通知說網頁在使用IE8觀看頁面時,圖片無法顯示
可是在除了IE8以外都看得到。
於是我呢,就查了一下原始碼,發現到一件事

在 Mac 上输入特殊字符的一些方法

不管你身處於什麼行業,只要有用電腦的需要,就必然會涉及到輸入一些除常見標點符號之外的特殊字符。那麼在Mac 中,如何快速的輸入一些不常見的特殊字符呢?今天小編來教你幾種方法!按住某鍵

在英文輸入狀態下,按住鍵盤上的某些字母鍵可以實現給該字母添加註音或者是臨時輸入一些帶注音符號語言的功能。譬如按住E 鍵,就會出現如下圖所示的選字框。

MAC OSX 修改系統字體為 冬青黑字體

筆者最近剛買了MAC Book i5 Pro 13吋 從Windows系統跳過來約兩個禮拜
因為不是 Retina 版本,所以真的很看不習慣MAC的那種宣染效果
也就是字體會有糊糊感覺,在Windows上的話,就是顯示卡未安裝正確時
會發生的字體有點糊糊的感覺,差點快瘋了!眼睛看得好吃力

Blogger 版面修改

考慮了很久,終於決定把此部落格打開,分享筆記
畢竟學到的部分都是從網路而來,那麼筆者我也總該分享了一下
但是門面不好,就不想公開,於是 我在網路上找了些套版。

在Blogger插入程式碼高亮顯示

這個方法老實說筆者我也找了好久才找到,之前都只找到利用CSS的方法將背景區隔
和文字部分往右移動一些,與內文區隔。

畢竟是別人提供的部落格,本來一直想說自己來寫一個部落格,作為分享與筆記
日後可以用到,也比較活用,包括在插入程式碼的高亮顯示方式,可以多一個按鈕
就不必在撰寫模式後,再回到雜七雜八的HTML模式再多加入標籤。

好了,雖然這個方法也是必需在雜七雜八的HTML模式下多插入標籤。
但這是目前看到在Blogger效果最好的一個方法。
廢話不多說,來開始說明:

ASP.NET 父視窗 呼叫 子視窗 並傳回值

今天要做一個開新視窗後,再透過新視窗選擇的值,在回傳給父視窗
為此達到效果,花了許多時間測試,因此把它筆記一下

這裡是使用ASP.NET C#

隱藏 Blogger 最上方資訊列 Navbar Bar的方法

大家會覺得 Blogger部落格 上方資訊列很阿扎的話,
可以透過Blogger的設定將它關閉,在這有兩種方法,
一種是使用內建的功能,將其選項關閉。
另外一種呢,則是直接將他的標籤進行CSS隱藏

VWD上傳元件 CuteWebUI 樣式設定

//設定為綠色讀取Bar
ProgressBarBorderStyle="background-color:#339966;"


Parallels Desktop 8「Parallels 無法連接至Parallels服務」的解決方法

最近小編在啟動虛擬機的時候發現提示無法連接至Parallels服務。
虛擬報錯無法啟動,在網上搜索了下,有很多網友提問這個問題,但是都無法解決,在試用了各種辦法之後,小編終於找到了解決的辦法。現在分享給大家。



關於【在 GDI+ 中發生泛型錯誤】出現的時機

我之前也曾經在處理圖片相關工作時遇過 "在 GDI+ 中發生泛型錯誤" 的錯誤,最近我們又再次遇到了,雖然這類問題多試幾次就很快能解決,但因為同樣的問題出現好幾次了,卻不太知有哪些出現的時機,因此做了一些研究,以便於下次更快速的判斷解決之道。

學習asp.net比較完整的流程

如果你已經有較多的面向對象開發經驗,跳過以下這兩步:
第一步掌握一門。NET面向對象語言,C#或VB.NET我強烈反對在沒系統學過一門面向對象(OO)語言的前提下去學ASP.NET。的ASP.NET是一個全面向對象的技術,不懂OO,那絕對學不下去!
第二步對。NET框架類庫有一定的了解可以通過開發Windows窗體應用程序來學習。NET Framework的ASP.NET是建構在。NET框架之上的技術,你對的。NET Framework了解得越深,學習ASP.NET就越快。舉個例子:下面簡單列出幾個對掌握ASP.NET非常重要的概念:對象的內存模型,委託,事件,多線程,程序集和應用程序域,安全模型。 NET在具備了OO基礎之後,以下是具體的學習ASP.NET技術步驟。
第一步:學習HTML與CSS

第二步:學習JavaScript的

JAVASCRIPT在目前的網站開發中用得很多,非常重要。
另外,它也是目前非常流行的AJAX技術的基礎。
第三步:學習計算機網絡原理

第四步:學習ASP.NET表示層技術,會設計網頁頁面
需要結合先前打好的面向對象技術的基礎,至少掌握以下內容:
(1)各種網絡控件的使用方法,
(2)理解信息在網頁中的傳送方式,比如餅乾,ViewState中,會話等的使用。
(3)
(4)ASP.NET實現事件驅動的內幕
(5)自定義用戶控件

第五步掌握數據庫技術
具體地說,要學習以下內容:
(1)學會使用SQL Server的
(2)學習ADO.NET,掌握使用代碼人工訪問數據庫(別用VS2005的嚮導)的方法
(3)學習數據綁定控件的使用
第六步理解多層架構


有的朋友問:學習架構是不是必須學習設計模式。

第七步學習XML與Web服務
先了解XML的基礎知識,找本講XML的書看一下就差不多了,然後,再學習Web服務的Web Service其實可類比為遠程方法調用(以XML格式表達的調用信息)。

第八步學習AJAX


第九步學習RIA技術
RIA:豐富的互聯網

轉接至 http://home.cnblogs.com/group/topic/1816.html

設計一個從物件導向為出發點的網站

在這裡我先假設你已經知道所謂物件導向程式設計的原理, 所以我不會浪費篇幅重複的解釋 OOP 是什麼。但是如果你來到這裡的目的是希望看到最基礎的 OOP 原理, 那麼我建議你去書局買一本適合的書回去慢慢研究, 或者上網從 WIKI 開始看起。
我在這裡想要介紹給 ASP.NET 新手的, 主要在於 OOP 的實踐方式, 以及應用時機。
應該如何下手?
我相信大多數程式設計師都或多或少知道 OOP 的原理, 或許有些還曾經花下心血研究它。但是到了現實生活中, 還是覺得不知從何下手。我想這也難免; 畢竟你就算完全不懂得 OOP, 你同樣可以把程式寫好、把工作做完。或許你看到這裡, 心裡剛好也正想說「對啊, 這就是我」。
此外, 在坊間的一般 OOP 書籍裡, 以及網路上許多對 OOP 的入門介紹文章中, 多半都拿什麼狗、貓、人、汽車等等讓人摸不著邊際的 Case 當作範例。然而, 有程式設計師會寫狗、貓、人或汽車的程式嗎? 對照到現實中的狀況, 書中的範例恐怕很難直接拿出來用。
因此, 我在這裡要以直接切入專案的方式, 使用對程式設計師而言更為「白話」的方式來介紹 OOP 在 ASP.NET 中的實踐方法。
我相信大家對於封裝、繼承這些 OOP 的基本觀念都已經可以朗朗上口了。不過在 ASP.NET 環境中, 並不是你開始下手去寫程式就會自動用上了 OOP 的精神。你必須在真正下手之前花點心思去規畫一下網站的做法, 才能寫出具有 OOP 精神的網站。
或許你對我上述說法存有疑義: 「.NET 在架構上本來就遵循 OOP 的精神, 我怎麼可能在這種平台中寫出非 OOP 的程式呢?」事實上, .NET 的底層架構確實完全是 OOP 導向的, 但是你還是可能在這種架構下寫出完全沒有 OOP 精神的東西出來, 就好像你可以在鋼筋水泥屋頂上再蓋出一個完全是木頭釘的小茅蘆一樣。
從自訂類別著手
先拿 OOP 的基本精神「繼承」為例好了。繼承的主要目的在於資訊的封裝以及程式碼的共用, 而它的基本單位是類別。如果你從來沒有在網站的 App_Code 子目錄下寫過程式, 那麼我認為你可能很難稱得上寫過真正的符合 OOP 精神的網站。
不過, 在你開始撰寫自訂類別之前, 你應該自問一下, 為什麼要撰寫類別? 以及要寫些什麼?
當然, 如果你要寫的網站很簡單, 差不多只有兩三頁而已, 那麼你真的可以不需要再往後面看下去了。但如果不是, 那麼你只要在不同網頁上、甚至同網頁的不同地方會用到相同的功能, 那麼你就可以考慮撰寫自訂的類別以達到共用程式碼的目的。
我提醒你盡量不要把所有的東西都寫在 .aspx.cs 或 .aspx.vb 裡面。如果你堅持的話, 你當然還是可以一直這麼做, 我並不是說這樣會讓你的程式出什麼大問題。但是經驗告訴我們, 當你遇到以下幾種情況的時候, 麻煩就會出現:
  • 當你在不同網頁中有需要共用程式碼的時候
  • 當你有需要自訂型別的時候
  • 當你覺得程式太長而需要分段以方便維護的時候
在以上情況中, 撰寫類別程式會是一個極為自然而又方便的解決方法。請往下看看一些範例, 你自然會明白。
此外, 在比較近代的觀念中, 我們會比較建議程式設計師把商業邏輯 (Business Logic) 包在網頁以外的地方; 這是一種稱為多層式架構 (Multi-tier) 的觀念。換句話說, 我們最好是在網頁程式中單純的處理僅跟網頁相關的事情, 例如檢驗某個僅能輸入數字的欄位是否真的輸入了數字; 但是至於輸入的數字是否落在商業邏輯允許的範圍內 (例如年齡限制在 18 到 35 歲) 則應該交給對應的類別來判斷。
在自訂類別中應該寫些什麼? 
還沒有把 OOP 當做呼吸一樣自然的新手可能會有這樣的問題, 那就是不知道應該寫些什麼類別。我認為自訂的類別至少可以用來撰寫以下幾種東西:
  • 程式庫 (Class Library)
  • 自訂型別 (Custom Type)
  • DataSet
其中 DataSet 在 Visual Studio 有其輔助設定工具可用, 我個人認為它應該算是 Data Layer 的一環, 所以在這裡就不再繼續討論它。
至於程式庫 (現在的 Visual Studio 在 Add New Item 視窗裡已經不再有這個 Template 了, 都僅稱為 Class), 我的意思是僅僅用來儲存共用程式碼的檔案。例如在我的專案中有如下的類別程式:
using System.Web;
...
using Johnny.Util;

namespace Johnny.Util
{
    public class parse
    {
        // Properties
        public string tobeParsed {get; set;}
        public string parsed {get; set;}
        ...
        // Methods
        public parse() { ... } // Constructor
        public parse(string input) { ... } // Constructor
        public static bool isInputValid(string input) { ... }
        ...
    }
}
如果在這種類別中有些方法很明顯是跟繼不繼承無關的 (就是說它是單純的功能函式), 那麼你可以考慮把寫成 static (在 VB 中稱為 Shared) 方法。
另一種類別則是自訂的型別, 例如以下的範例程式:
using System;
...
using Johnny.Util;

namespace Johnny.Management
{
    public interface iMyDataType
    {
        DataTable queryData();
        bool insert();
        bool update();
        bool delete();
        string ToString();
    }

    public enum eGendre : int
    {
        male = 0,
        female = 1
    }

    public class personel : iMyDataType, IComparable, ICompare<object>, IEqualityComparer<object>
    {
        // Properties
        ...
        // Methods
        public personel() { ... } // Constructor
        ...
    }
在以上程式中, 我定義了一個稱為 personel 的自訂型別, 此外也定義了一個叫做 iMyDataType 的 Interface 和一個叫做 eGendre 的 Enum。這個 personel 自訂型別實作了 iMyDataType, IComparable, ICompare 和 IEqualityComparer 等等幾個介面, 意思就是它還必須定義像 queryData, insert, update, delete, ToString, CompareTo, Compare, Equals, GetHashCode 等等幾個方法。
請別誤會, 自訂型別不一定非得實作什麼介面不可; 你也可以完全不實作任何介面。要實作什麼介面, 端視你自己的需要而決定; 那不是強制的。
我實作 iMyDataType 介面的目的在於強制要求型別必須提供那些方法, 而實作其它幾個介面的目的在於提供陣列或 Collection 物件的 Sort 的可行性等等。這個部份稍嫌複雜, 容我不在這篇入門文章裡做太多的介紹。(如果你真的對這個部份有興趣, 你可以另外參考「讓自訂類別的陣列物件具有排序與搜尋的能力」這篇文章, 在這裡就不另外說明了。)
不過, 請特別注意一點, 把類別區分為程式庫和自訂型別, 這是我個人的講法, 也是我個人的習慣; 在 .NET 中其實並沒有這樣的區分法。事實上, 像 .NET 內建的 Array 型別就是一個典型的例子: Array 本身是個型別, 但是在 Array 之下還有很多的 Static 方法跟非 Static 方法可以使用。不過話說回來, Array 類別下提供的各個方法都只跟 Array 型別和其實體化物件有關係, 所以我們在撰寫自訂類別時最好還是注意一下是否維持合理的邏輯關係。
此外, 你最好記得幾件事: 首先, 在 App_Code 下面, 你可以無限制的建立子目錄, 所以你可以妥善的使用子目錄以將不同的類別檔案分類; 其次, 沒有人規定你必須把所有的類別都寫在同一個檔案裡, 所以你大可以把不同的類別寫在不同的檔案裡 (檔案名稱可以隨便取。不過, 當然, 你最好不要真的隨便取, 以免未來連自己都搞混了); 如果有一個類別程式太大, 你甚至可以把它拆在兩個以上的檔案裡。還有, 你最好像我在以上範例一樣給予各個類別適當的 Namespace, 以後當你要引用這些類別時可以為你帶來很大的方便性。
所以, 其實在我的實際專案中, iMyDataType 這個介面和 eGendre 並不是和 personel 類別擺在同一個檔案裡面的, 而是放另一個包容更大架構的命名空間的其它類別之下。事實上只要命名空間取得有條理, 你把這些元件放在哪一個檔案、哪一個子目錄下面 (只要不移到 App_Code 之外即可), 都不會造成任何影響。例如我在我的 Johnny.Utils 命名空間之下可能建立了二十個類別, 而它們被存放在八個資料夾之下的二十五個檔案裡面, 但一經 Compile, 它們都會被放入同一個 .dll 檔案裡面, 而在撰寫程式時, 我還是只需要鍵入 Johnny.Utils, 然後 Visual Studio 的 Intellisense 功能會自動帶出這二十個類別出來。
就我個人而言, 我事實上是把各個類別程式盡可能的分散, 藉由各資料夾名稱進行歸納 (根據我對命名空間的區分規則)。所以我個人在 App_Code 之下放的不只程式庫和自訂型別兩種, 我甚至有些檔案只放 Enum 或公用欄位。對你而言, 你也可以視需要而做更靈活的規劃。
繼承及擴充 
我已經提醒過你, 最好在撰寫網站之初就先規畫一下整體的架構。舉個例子, 假設你在開發一個人事管理的網站, 經過分析, 你發現公司的員工可以分做管理階層 (Manager)、一般職員 (Employee) 以及雇員 (Contractor) 三種 (我相信如果你有先使用 UML 做需求分析的話, 那麼你至少在畫 Use Case Diagram 時就可以分析出這幾'種角色)。這三種員工身分的大部份屬性和方法都是相同的, 只有少部份有差異。在這種情況下, 你應該可以先建立一個 personel 自訂型別, 然後再各別建立 manager, employee 與 contractor 三個類別以繼承 personel 類別, 如下範例:
public class personel : iMyDataType, IComparable, ICompare<object>, IEqualityComparer<object>
{
    // Properties
    public int employeeId {get; set;} // 員工編號
    public string name {get; set;} // 員工姓名
    public double salary {get; set;} // 薪資
    ...
    // Methods
    public double pay() { ... } // 發薪
    ...
}
public class manager : personel
{
    // Properties
    public stock options {get; set;} // 股票選擇權
    // Methods
    public stock vast(stock newStock) { ... } // 配發股票選擇權
    ....
}
public class manager : employee
{
    // Properties
    public double bonus {get; set;} // 主管加給
    // Methods
    public double getBonusThisMonth() { ... } // 取得常月的主管加給
    ....
}
public class contractor : personel
{
    // Properties
    public int workHours {get; set;} // 工時
    public double hourFee {get; set;} // 時薪
    // Methods
    public override double pay() { ... } // 發薪 (覆寫)
    ....
}
在以上的繼承結構中, employee 與 contractor 繼承了 personel 類別, 而 manager 又繼承了 employee 類別。在 manager, employee 和 contractor 這三個類別中, 各自再加入了新的屬性或方法, 而 contractor 則覆寫了 personel 的 pay 方法。由於 manager, employee 和 contractor 這三個衍生的類別乃衍生自 personel 類別, 所以它們也都自動實作了 iMyDataType, IComparable, ICompare 和 IEqualityComparer 這幾個介面。
如果你使用 Visual Studio 做為開發工具的話, 你可使用它所內建的 Class Diagram 做為輔助設計類別的工具。這個工具可以協助你製作出類別架構, 如果你是從大架構來設計網站的話, 這個工具蠻好用的。
當你設計好這幾個類別之後, 我們可以在網頁程式中透過以下的方式來使用它們:
personel p;
double b = (double) 0;
switch (DropDownList1.SelectedIndex)
{
    case 0:
        p = new employee();
        break;
    case 1:
        p = new manager();
        p.bonus = p.getBonusThisMonth();
        b = p.bonus;
        break;
    case 2:
        p = new contractor();
        break;
}
p.employeeId = txtPID.Text;
p.salary = double.Parse(txtSalary.text);
p.salary += b;

善用組頁工具 
我原本打算在這篇文章裡面介紹的是 OOP, 但是既然你已經耐心的看到這裡, 我想你一定可以忍受我再囉嗦一點你可能不認為是 OOP 的部份。ASP.NET 從最早的版本開始就已經提供了包括 Master Page, Theme, User Control, Custom Control 等等可以幫我們共享程式碼的東西。如果你還不會、或尚未用過這些功能的話, 我建議你盡早把它們加入你的網站 (Custom Control 可以例外, 因為它畢竟不是對所有人都適用)。一旦你能夠掌握這些功能, 你會立即發現它們能夠帶給你的方便性, 並且讓你的網站看來更專業。
不過不管是 Master Page, Theme, User Control 等等, 這些都可以算是 ASP.NET 的顯學, 隨便一本入門書籍都會有很大篇幅的介紹, 你不可能會不知道的 (當然, 或許你還沒有意會到它們的作用... 如果真的如此, 好吧, 我要再度推薦一下它們), 因此我覺得就不用在這裡佔篇幅去介紹它們了。
展現物件導向的魔力 
上述的範例為求簡化, 我把商業邏輯和使用者輸入的處理部份放在一起; 你的程式最好能進一步把商業邏輯抽離出網頁程式之外。例如, 你可以把程式中 switch ... 這一段抽出來單獨寫成一個類別, 這樣會使得這整個範例程式剛好變成了一個典型的 Design Pattern 裡面著名的 "Factory Method"。如果你對這方面感到興趣, 你不妨另外找時間深入研究。我想我應該不會在 ASP.NET 2Share 裡針對在這個主題上花太多篇幅, 因為 Design Pattern 在坊間早有成山一般的書籍可供參考, 在網路上則有更多。(順道補充一下, 在 .NET Framework 裡面, 它內建的 Provider Model 就有很多此種 Design Patern 的影子)
如果你早已熟悉 OOP 的基本原理, 你或許會認為這裡所舉的例子平淡無奇。但是, 請不要小看這種設計方法在實際案例上所能帶給我們的好處。事實上, 在未來, 假設針對所有 personel 的某個方法或屬性 (例如 calcTaxRate 或  annualLeaveDays) 有需要變更, 那麼我們只需要修改 personel 類別的程式即可; 如果僅有 contractor 的某個方法或屬性有變更, 我們只需要修改 contractor 類別即可; 而如果原本 manager 的 vast 方法是繼承 employee 的, 但某一天需求突然又被改了, 那麼我們還是只需要在 manager 類別覆寫這個方法即可。用簡單的話說, 我們可以把修改程式的幅度減少到最低的程度, 也同時把程式間交互影響的程度降到最低, 這是不是一舉數得呢?
在現實世界中, 就算專案規劃得再好, 你也不能保證客戶 (這裡所指的客戶恐怕也包括你自己) 不會更改需求。當然, 雖然 OOP 也不是什麼能治百病的萬靈丹, 但它已被證實是能夠讓程式設計師生活得更愉快的方式之一。 所以, 你既然決定在 .NET 架構下撰寫程式, 那麼就好好運用它的優點吧!
再以這個範例中的情境為例吧! 假設, 就算你的系統分析師已經確信他做過有史以來最完善的需求訪談了, 但是專案經理仍然在快要接近驗收關卡的時候告訴你, 客戶告訴他, 因為客戶的老闆的小姨子的未婚夫的爸爸突然被安插進來擔任公司的資深顧問, 所以針對這個新增的職務, 其薪資結構和股票選擇權的計算公式要另外設計。不幸的, 總經理急著驗收領錢, 所以不同意結案時間有任何異動。現在, 請問應該如何處置?
對付這種情況, 以物件導向方式設計的系統和以非物件導向方式設計的系統可能有很迴異的處理方法。在我們的例子中, 只要加入一個繼承 manager 類別的 seniorManager 類別, 把差異部份覆寫一下, 然後在網頁程式稍為改一下, 再重新測試一下系統, 我相信還是有很大的機會能夠如期驗收的。
Interface 也能這麼玩 
在以上範例中, 假設 A1, A2 與 A3 三個類別都是繼承了 A 類別, 那麼你在其它程式中先宣告
A a;
然後你再視情況需要讓 a 實體化為 A1, A2 或 A3 型別:
a = new A1(); // 或
a = new A2(); // 或
a = new A3();
如此一來, 你可以執行 a 的大部份方法而無需擔心這個 instance 到底是 A1, A2 還是 A3:
a.DoThings(); // a 如果是 A1 的 instance, 就會執行 A1.DoThings(); 如果是 A2, 就會執行 A2.DoThings(); 依此類推
事實上, 介面 (Interface) 也可以這樣子玩。現在假設 B1, B2 與 B3 這三個都同時實作了 iMyInterface 這個介面, 而 iMyInterface 這個介面都規範有 Method1() 與 Method2() 這兩個方法, 那麼, 同樣的, 你也可以宣告一個 iMyInterface 物件:
iMyInterface b;
然後視情況讓 b 實體化為 B1, B2 或 B3:
b = new B1(); // 或
b = new B2(); // 或
b = new B3();
同樣的, 之後你就可以任意的執行 b.Method1() 或 b.Method2() 而無需擔心它到底是 B1, B2 或 B3 型別; 因為它如果是 B1 型別, 它會自動去執行 B1.Method1() 或 B1.Method2(), 它如果是 B2 型別, 它會自動去執行 B2.Method1() 或 B2.Method2(), 依此類推。
如果你的網站或程式還沒有寫得很大, 你或許無法體會 Interface 到底對你有些什麼用。是的, 你現在只要了解 Interface 也能這麼用就好了; 你可以先去體驗一下建立自訂類別及衍生類別的優點, 未來再慢慢研究 Interface, 猶時也不晚。

ASP.NET C# 格式化字串

ASP.NET C# 格式化字串

String snum = "123"
String pnum = snum.PadLeft(6, '0'); 
String fnum = String.Format("{0:000000}",Convert.ToInt16(snum)); 


時間格式

DateTime.Now.ToShortTimeString()
DateTime dt = DateTime.Now;
dt.ToString();//2005-11-5 13:21:25
dt.ToFileTime().ToString();//127756416859912816
dt.ToFileTimeUtc().ToString();//127756704859912816
dt.ToLocalTime().ToString();//2005-11-5 21:21:25
dt.ToLongDateString().ToString();//2005年11月5日
dt.ToLongTimeString().ToString();//13:21:25
dt.ToOADate().ToString();//38661.5565508218
dt.ToShortDateString().ToString();//2005-11-5
dt.ToShortTimeString().ToString();//13:21
dt.ToUniversalTime().ToString();//2005-11-5 5:21:25
dt.Year.ToString();//2005
dt.Date.ToString();//2005-11-5 0:00:00
dt.DayOfWeek.ToString();//Saturday
dt.DayOfYear.ToString();//309
dt.Hour.ToString();//13
dt.Millisecond.ToString();//441
dt.Minute.ToString();//30
dt.Month.ToString();//11
dt.Second.ToString();//28
dt.Ticks.ToString();//632667942284412864
dt.TimeOfDay.ToString();//13:30:28.4412864
dt.ToString();//2005-11-5 13:47:04
dt.AddYears(1).ToString();//2006-11-5 13:47:04
dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
dt.AddMonths(1).ToString();//2005-12-5 13:47:04
dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
dt.CompareTo(dt).ToString();//0
dt.Add(?).ToString();//問號為一個時間段
dt.Equals("2005-11-6 16:11:04").ToString();//False
dt.Equals(dt).ToString();//True
dt.GetHashCode().ToString();//1474088234
dt.GetType().ToString();//System.DateTime
dt.GetTypeCode().ToString();//DateTime
  
dt.GetDateTimeFormats(s)[0].ToString();//2005-11-05T14:06:25
dt.GetDateTimeFormats(t)[0].ToString();//14:06
dt.GetDateTimeFormats(y)[0].ToString();//2005年11月
dt.GetDateTimeFormats(D)[0].ToString();//2005年11月5日
dt.GetDateTimeFormats(D)[1].ToString();//2005 11 05
dt.GetDateTimeFormats(D)[2].ToString();//星期六 2005 11 05
dt.GetDateTimeFormats(D)[3].ToString();//星期六 2005年11月5日
dt.GetDateTimeFormats(M)[0].ToString();//11月5日
dt.GetDateTimeFormats(f)[0].ToString();//2005年11月5日 14:06
dt.GetDateTimeFormats(g)[0].ToString();//2005-11-5 14:06
dt.GetDateTimeFormats(r)[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT
string.Format("{0:d}",dt);//2005-11-5
string.Format("{0:D}",dt);//2005年11月5日
string.Format("{0:f}",dt);//2005年11月5日 14:23
string.Format("{0:F}",dt);//2005年11月5日 14:23:23
string.Format("{0:g}",dt);//2005-11-5 14:23
string.Format("{0:G}",dt);//2005-11-5 14:23:23
string.Format("{0:M}",dt);//11月5日
string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT
string.Format("{0:s}",dt);//2005-11-05T14:23:23
string.Format("{0:t}",dt);//14:23
string.Format("{0:T}",dt);//14:23:23
string.Format("{0:u}",dt);//2005-11-05 14:23:23Z
string.Format("{0:U}",dt);//2005年11月5日 6:23:23
string.Format("{0:Y}",dt);//2005年11月
string.Format("{0}",dt);//2005-11-5 14:23:23
string.Format("{0:yyyyMMddHHmmssffff}",dt);
計算2個日期之間的天數差
-----------------------------------------------
DateTime dt1 = Convert.DateTime("2007-8-1");   
DateTime dt2 = Convert.DateTime("2007-8-15");  
TimeSpan span = dt2.Subtract(dt1);             
int dayDiff = span.Days + 1;                   
計算某年某月的天數
-----------------------------------------------   
int days = DateTime.DaysInMonth(2007, 8);      
days = 31;                                     
給日期增加一天、減少一天
-----------------------------------------------
DateTime dt =DateTime.Now;
dt.AddDays(1); //增加一天
dt.AddDays(-1);//減少一天
其它年份方法類似...
Oracle SQL裡轉換日期函數
-----------------------------------------------
to_date("2007-6-6",YYYY-MM-DD");
to_date("2007/6/6",yyyy/mm/dd");
如下一組數據,如何查找表裡包含9月份的記錄:
CGGC_STRATDATE  CGGC_ENDDATE
=========================================
2007-8-4  2007-9-5
2007-9-5  2007-9-20
2007-9-22  2007-10-5
SELECT * FROM TABLE
(TO_DATE(2007/9/1,yyyy/mm/dd) BETWEEN CGGC_STRATDATE
AND CGGC_ENDDATE OR CGGC_STRATDATE >=TO_DATE(2007/9/1,yyyy/mm/dd)
AND CGGC_ENDDATE<=TO_DATE(2007/9/30,yyyy/mm/dd) "
OR TO_DATE(2007/9/30,yyyy/mm/dd) BETWEEN CGGC_STRATDATE
AND CGGC_ENDDATE) ORDER BY CGGC_STRATDATE ASC

何謂物件與類別

何謂物件與類別
物件(Object)簡單的說就是一個東西,物件可被識別和描述、有狀態(屬性)、有行為(方法

  類別(Class)是物件抽象的定義,也就是說類別是定義物件的一個藍圖。 

例如
Person Peter = new Person();   //Person:類別 Peter:物件 然後再利用new的方式將Person類別的屬性繼承給Peter使用
Peter.Height=164;      //Peter物件使用[.]即可出現繼承的屬性,不過繼承來的屬性只為空的屬性裡面並沒有值
Peter.Walk(10); //使用方法 並給予10的值 在C語言稱為副程式

※我們需再寫一段Person的類別 peter物件才有屬性能使用
例如
public class Person //類別名稱Person
{
  public int Height; //定義身高的型別
  public int Weight; //定義體重
  public void Walk(int x) //走路方法
  {
    Console.WriteLine("走了{0}公里",x);
}
※Person類別包含了兩個屬性一個方法

ASP.NET Submit 處理重大錯誤

ASP.NET Submit 處理重大錯誤

textBox 在 Page_Load 時載入預設值時

因為沒有設定
if (!IsPostBack)
 {
textBox.Text  = "初始值";
}    


導致按下Button後,又再次將 textbox.Text 的值再設定一次進去 覆蓋掉 手動輸入修改過的值

預存程序 MS SQL


以下文章擷取至麟瑞科技黃俊傑先生所發表的(SQL SERVER2000預存程式簡介與實務應用)一文......
何謂預存程序(STORE PROCEDRE),就是SQL STATEMENTS的集合,SQL SERVER將該集合中的STATEMENTS編譯成一個執行計畫,當預存程序第一次執行時,系統將經過編譯的執行計畫載入記憶體中,並且可重複使用,這樣SQL SERVER就不必每一次執行相同的任務就重複分析語法是否正確。

PHP 搬移到 ASP.NET

從 PHP 遷移到 ASP.NET

簡介
本文討論了從 PHP (PHP:Hypertext Preprocessor 4) 到 ASP.NET 的遷移,并對 PHP 和 Microsoft® Visual Basic® .NET 的基本語法以及基本功能和體系結構進行了對比。
盡管使用 PHP 和 ASP.NET 都可以構建復雜的 Web 應用程序(例如電子商務站點、Intranet 和企業門戶),但兩者之間卻存在若干重要差別。與 PHP 不同,ASP.NET 并不是一種語言或分析器,而是 Microsoft .NET Framework 中的一組用于構建 Web 應用程序和 XML Web Service 的技術。同 PHP 一樣,Microsoft ASP.NET 頁面在服務器上執行并生成標記(例如 HTML、WML 或 XML),標記將發送給桌面應用程序或移動應用程序。但不同的是,ASP.NET 為開發 Web 頁面提供了強大的、面向對象的以及由事件驅動的編程模型,同時仍保留了 PHP 開發人員所習慣的那種簡單性。

ASP.NET POST與GET傳值接收方法

在這裡簡單介紹基本的傳值與接收方法 POST 與 GET
大概說明一下,下面會做些什麼
在主頁插入一個超連結項目,接著透過另外一個頁面來接收值
值的部分為 網址 ? 符號後面的字串,解析為 Name=Value
第二個參數以 & 符號接上。