六月 22

其實 WinForm 跟 WebForm 在連結資料庫方面其實差不了太多。

C#:
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.     //第一:連結SQL資料庫
  4.     string connstr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\test_Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True";
  5.     SqlConnection conn = new SqlConnection(connstr);
  6.     conn.Open();
  7.  
  8.     //第二:執行SQL指令
  9.     string sqlstr = "select * from test";
  10.     SqlCommand cmd = new SqlCommand(sqlstr,conn);
  11.  
  12.     SqlDataReader dr = cmd.ExecuteReader();
  13.  
  14.     //第三:印出資料
  15.     while (dr.Read())
  16.     {
  17.         Response.Write("文章編號:" + dr["id"] + "<br>");
  18.         Response.Write("日  期:" + dr["test_time"] + "<br>");
  19.         Response.Write("文章標題:" + dr["title"]);
  20.         Response.Write("<hr>");
  21.     }
  22.  
  23.     //第四:關閉連線
  24.     cmd.Cancel();
  25.     dr.Close();
  26.     conn.Close();
  27.     conn.Dispose();
  28. }

文章參考於:ASP.NET專題實務-適用C# 作者:周棟祥

六月 22

工具:RequiredFieldValidator
驗證:必要輸入項
說明:確保使用者不會略過輸入項目。如需詳細資訊,請參閱 HOW TO:驗證 ASP.NET 伺服器控制項的必要項目。

工具:CompareValidator
驗證:與某個值的比較
說明:使用比較運算子 (例如小於、等於、大於),將使用者輸入的值與常數值、另一個控制項的值,或特定資料型別做比較。如需詳細資訊,請參閱 HOW TO:比對特定值驗證 ASP.NET 伺服器控制項和 HOW TO:比對資料型別驗證 ASP.NET 伺服器控制項。

工具:RangeValidator
驗證:範圍檢查
說明:檢查使用者的輸入是否介於指定的上下限之間。您可以檢查成對的數字、英文字母字元和日期內的範圍。如需詳細資訊,請參閱 HOW TO:比對範圍值驗證 ASP.NET 伺服器控制項。

工具:RegularExpressionValidator
驗證:樣式比對
說明:檢查輸入是否符合規則運算式 (Regular Expression) 所定義的樣式。這類的驗證可讓您檢查字元 (例如電子郵件地址、電話號碼、郵遞區號等項目中的字元) 的預期順序。如需詳細資訊,請參閱 HOW TO:比對模式驗證 ASP.NET 伺服器控制項。

工具:CustomValidator
驗證:使用者定義
說明:使用您自己撰寫的邏輯驗證使用者的輸入。這類驗證可讓您檢查執行階段時衍生的值。如需詳細資訊,請參閱 HOW TO:使用 ASP.NET 伺服器控制項的自訂函式驗證HOW TO:比對資料庫值驗證 ASP.NET 伺服器控制項。


MSDN

六月 21

  在 VS20085 工具列中,AJAX 擴充功能這個選項是內建的,不過在 VS2005 中並沒有,現在坊間的書籍大多以 VS2008 為主,會常用到 AJAX 功能,不過如果不更換版本,在 VS2005 中也可以安裝 AJAX 擴充功能。你必須下載以下檔案(約1MB多)安裝完成後,AJAX 擴充功能就會出現了。

下載檔案:
ASP.NET AJAX 1.0

六月 20

[寫程式] 藝術?還是快速開發?

程式 1 個回應 »   瀏覽人數:[ 1,789user+647bot ]

  用 Visual Studio 久了會發現一個問題,就是會越來越依賴這個開發工具,因為它什麼都幫你處理好了,程式指令永遠只記得前面三個字母,因為VS有指令自動補齊,連接資料庫有精靈幫忙,管你是 MSSQL 還是 Access,全部按一按搞定,還順便幫你把 Insert、Update、Select、Delete…等 SQL 四大溝通指令寫好了,程式就這麼在拖拉、設定之間開發完成,有的甚至不用寫任何一行指令。

  以前我很排斥用精靈方式來寫程式,堅持一字一句 Key 出來,不過我發現這會花費很多時間,舉個例子來說好了,寫一個簡單的通訊錄,不包括建資料庫的時間,用傳統手 Key 方式,我大概要花上半天的時間,因為我要拉控制項、設定控制項名稱、寫資料庫連接、資料繫結、資料配接器的 Insert、Update、Select、Delete 四個屬性質、設定 BindSource 導覽列…等,寫完天都黑了。

  不過如果換成精靈模式寫,大概只要30分鐘就可以搞定,在產出力方面,精靈模式大勝,不過在程式靈活度、和可讀性來說,還是傳統手 Key 方式略勝一籌。

  站在公司的立場,當然希望程式設計師的產出力越多越好,有些小地方還是用拖拉的就好,藝術這種東西不能當飯吃,VS是一個很邪惡的東西,因為他讓新手認為寫程式是一件很簡單的東西,讓老手離不開它。

六月 19

C# string.Format輸出格式

程式 沒有回應 »   瀏覽人數:[ 5,791user+1,552bot ]
C#:
  1. 前面補0的數字字串
  2. String.Format("{0:0000}", 157); // 輸出 0157
  3.  
  4. 前後都補0的數字字串
  5. String.Format("{0:0000.0000}", 157.42); // 輸出 0157.4200
  6.  
  7. 3位數()加逗號
  8. (String.Format("{0:0,0}", 38560); // 輸出 38,560
  9.  
  10. 格式化電話號碼
  11. (String.Format("{0:(###) ###-####}", 8005551212); // 輸出 (800) 555-1212
  12.  
  13. 金額的表示
  14. (String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0); // 這個會顯示 Zero
  15. (String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50); // 這個會顯示 $1,243.50

依照上面格式範例 ~ 套用到我的報表要呈現的欄位 ~ 如以下 ~

C#:
  1. private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  2.   {
  3.    if (e.Item.ItemIndex.ToString() != "-1")
  4.    {
  5.     e.Item.Cells[0].Text = string.Format("{0:#,0.0}",double.Parse(e.Item.Cells[3].Text.ToString()));
  6.    }
  7.   }

參考資料來源:
http://blog.stevex.net/index.php/string-formatting-in-csharp/

六月 18

伺服器應用程式無法使用
您嘗試在此 Web 伺服器上存取的 Web 應用程式目前無法使用。
請按 Web 瀏覽器中的 [重新整理] 按鈕,再試一次。

系統管理員注意:
Web 伺服器的應用程式事件記錄檔中的
錯誤訊息詳細說明了這項特定要求失敗原因。
請檢閱這個記錄項目,查看造成錯誤的原因為何。

終於找到
方法解決了~"~

http://blog.xuite.net/giin/blog/13640747

請直接到
[開始]→[執行]→輸入
[ C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727\aspnet_regiis.exe -i ] 就行了

最後確認一下預設的IIS執行環境

IIS→預設網站→內容→ASP.NET→確認 版本2.0.50727

應該就OK了!!

四月 06

強制關閉處理程序的工具(NTSD)

軟體 2 個回應 »   瀏覽人數:[ 1,538user+1,127bot ]

如果發現有執行程式關不掉
木馬、病毒、當掉的程式皆可使用

按開始->執行->輸入 cmd -> 按enter

c:>ntsd -c q -p <<程序識別碼>>

Q.程序識別碼那裡來??

  1. 按開始->執行->輸入taskmgr.exe -> 按enter
  2. 檢視->選擇欄位-> 勾選PID(程序識別碼)->按確定
  3. 然後就能看見PID。

適用系統:
windows 2000、window xp(NT系列的應該都可以用)。

windows xp 有其他類似的工具 tasklist和tskill
tasklist:列出所有程序名稱及其他資訊。
tskill:終止程序, tskill <<程序名稱>>。

四月 06

聽趨勢說話(1)

理財 沒有回應 »   瀏覽人數:[ 577user+443bot ]

錢的個性

  1. 錢喜歡物以類聚。
  2. 錢很害羞。
  3. 錢喜歡跟同類在一起,才有安全感。
  4. 錢不喜歡獨處。
  5. 錢很勢利,喜歡富人,不喜歡窮人。
  6. 愛聚集,且喜歡招朋引伴,安全或危險不重要。
  7. 聚的越多,聲勢越大,吸引力越大。

操作心法

  1. 股票沒有量,不會漲,也不會跌。
  2. 量一定要大於6日均量,才算大量。
  3. 量大三日,必有蹊蹺。
  4. 底部量大三日(越大越好),配合價揚,可買。
  5. 高價不漲(含跌價),放大量,宜出。
  6. 底部放量後,量縮小,價不破可買進。
  7. 高價放量,價不創新高,量收小,出股票。
  8. 價盤,量走弱,不玩。
  9. 以一年的 K 線圖,和成交量來判斷。
  10. 大盤的勢,大於個股的勢,不可逆大盤的勢。

停損

  1. 三天不賺砍股票。
  2. 損失10%砍股票。
  3. 已經損失了10%,不必等3天就砍。
  4. 不可手軟。
  5. 設停損,不設停利。
  6. 股價上揚,到達滿足點,回檔賣出,也是停損的形式,永遠要賣在已經走弱的價之後,唯有這樣才能知道,股價能把你帶到什麼價位去,而不是賣在後悔的股價裡。
  7. 寧願停損十次,不願套牢一次。
  8. 停損有時後是大勢所迫,而不是個股的失誤。
  9. 不要怕錯,能改才能生存。
  10. 商人無祖國,投資無忠誠。
二月 04
C#:
  1. DateTime dt1 = new DateTime(2008, 12, 31);
  2. DateTime dt2 = new DateTime(2009, 2, 13);
  3. TimeSpan s = new TimeSpan(dt2.Ticks - dt1.Ticks);
  4. MessageBox.Show(Convert.ToString(s.Days));
  5.  
  6. //回傳44天,相反則為負值

 

參考網址:
C# 如何取得兩個 DateTime 日期之間的天數
TimeSpan MSDN

 

二月 02

列舉 (enum) 資料型別

程式 沒有回應 »   瀏覽人數:[ 2,112user+1,082bot ]

  enum 是一種用來宣告列舉型別 (Enumeration Type) 的關鍵字,是一組列舉清單項目的具名常數所構成的特殊型別,emun 主要目的在提高程式的可讀性,及易維護性,使用 enum 有以下幾點需要注意:

  1. enum 不能使用於方法 (Method) 內宣告。
  2. 資料型別必須是 byte,sbyte,short,ushort,int,uint,long 或 ulong。
  3. 預設資料型別為 int。
  4. float 與 double 不可為 enum 的資料型別。

關於列舉的宣告方式如下:

[存取修飾詞] enum [列舉名稱] : [資料型別]
{
  [成員1],
  [成員2],
  ...
  [成員n]
}

 

關列舉範例程式如下:

C#:
  1. public enum student : short
  2.         {
  3.             周杰倫 = 1,
  4.             方文山 = 2,
  5.             蔡依林 = 3,
  6.             王立宏 = 4
  7.         }
  8.  
  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             //將combox的文字數字轉換成短整數
  12.             short num = 0;
  13.             if (cbox.Text != "")
  14.             {
  15.                 num = short.Parse(cbox.Text);
  16.             }
  17.  
  18.             switch (num)
  19.             {
  20.                 case (short) student.周杰倫:
  21.                     MessageBox.Show("周杰倫", "明星");
  22.                     break;
  23.                 case (short) student.蔡依林:
  24.                     MessageBox.Show("蔡依林", "明星");
  25.                     break;
  26.                 case (short) student.方文山:
  27.                     MessageBox.Show("方文山", "明星");
  28.                     break;
  29.                 case (short) student.王立宏:
  30.                     MessageBox.Show("王立宏", "明星");
  31.                     break;
  32.                 default:
  33.                     MessageBox.Show("所選取數值不在範圍中","注意");
  34.                     break;
  35.             }