2014年11月18日 星期二

VS 2012 C# 日期變化(DateTime) -- 20141117

讓TextBox1呈現「今天」的日期!!!

  • TextBox1.Text = DateTime.Now.ToString( );
→ 進階-指定日期的格式:DateTime.Now.ToString("yyyy/MM/dd");  
→呈現格式(如):2014/11/17


---------------------------------------------------

昨天日期:

  • DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd");

→呈現格式(如):2014/11/16

----------------------------------------------------

明天日期:

  • DateTime.Now.AddDays(1).ToString("yyyy/MM/dd");

→呈現格式(如):2014/11/18


--------------------------------------------------

上個月日期:

DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd")).AddMonths(-1).ToShortDateString( );

--------------------------------------------------

下個月日期:
DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd")).AddMonths(1).ToShortDateString( );

--------------------------------------------------

本年度第一天:

DateTime.Parse(DateTime.Now.ToString("yyyy/01/01")).ToStringDateString( );

--------------------------------------------------

本年度最後一天:

DateTime.Parse(DateTime.Now.ToString("yyyy/01/01")).AddYears(1).AddDays(-1).ToStringDateString( );






2014年11月14日 星期五

使用AJAX Control Toolkit出現錯誤訊息 -- 20141113

緣由:

由於使用AJAX Control Toolkit擴充的元件開發程式,結果出現了下列錯誤訊息「
找不到任何適用特定文化特性或中性文化特性的資源。請確定您已在編譯時期正確地將 AjaxControlToolkit.Properties.Resources.NET4.resources" 嵌入或連結至組件 AjaxControlToolkit" 中,或所有需要的附屬組件均為可載入且已完整簽署。」(如下圖)





解決方式:

透過AJAX擴充功能選項中,將ScriptManager拖曳到開發的畫面中,錯誤訊息即可消失,程式也可正常運作。(如下圖)

結論:

初學者往往都看見錯誤訊息就會放棄,當找到解決方式的話,肯定會更進一步!退縮與逃避是不能解決問題的,希望我也可以對某項東西也可以持之以恆!  哇哈哈




































認識AJAX -- 20141113

何謂AJAX?

    簡單說就是非同步的網頁技術,是J.J Garrett(2005年初)提出來的一種網頁技術,其AJAX的全名為Asynchronous JavaScript And XML。由於傳統的網頁應用,用戶端必須將整個網頁表單傳回伺服器端,經由伺服器端處理後,再回傳整個網頁內容到用戶端,往往造成許多頻寬的浪費。
    為了解決這問題,故採取AJAX技術,僅將網頁部分內容回傳伺服器端,在將更新後的最新消息載入用戶端,減少資料在網路上傳送,降低伺服器負載,提升網頁的處理效率。


--------------------------------------------------------------------------------
網頁「同步」與「非同步」模式的差異?

例子:當網頁中只有最新消息的需要進行更新,而網頁其他部分(選單、廣告、版權...等)不需要進行更新。

同步處理:
根據上述例子,在傳統的動態伺服器網頁,必須將整個網頁全部回傳至伺服器端,經過伺服器端處理並取的資料庫最新消息之後,再將整個網頁全部內容包含網頁其他部分全部回傳至用戶端。缺點:當伺服器端忙碌或網路速度變慢的時候,此時用戶端的使用者只能等待。


非同步處理:
同樣根據上述例子,在不換頁的情形下,只更新最新消的區塊,且整個網頁只將最新消息區怪回傳至伺服器端,再將更新後的最新消息載入至用戶端,其餘的部份(選單、廣告、版權...等)並不會傳至伺服器端也不會刷新頁面。優點:在伺服器和瀏覽器之間交換的資料大量減少(大約只有原來的5%),伺服器回應更快了,因此Web伺服器的負荷也減少了。

--------------------------------------------------------------------------------------------------------

補充:
AJAX網頁屬於用戶端(展示層)的技術,再用戶端的瀏覽器必須使用JavaScript的XMLHttpRequest送出非同步的Http Request,此時只會將指定的欄位資料傳送至伺服器端,而網頁的其他資料並不會進行回傳(PostBack),接著再透過Http Response方式將更新後的執行結果下載至用戶端的瀏覽器,最後透過JavaScript將更新後的執行結果以背景執行的方式寫回DHTML或DOM(Document Object Model)指定的標籤區塊,此時指定的區塊即會進行更新,由於傳送和接收資料是屬於非同步的模式,因此使用者可以在不換頁的情形下繼續在網頁上進行任何操作。



------------補充 20150807-----------------------------------------------

名詞解釋:


  • XMLHttpRequest物件:用途是被設計來透過HTTP在瀏覽器和伺服器之間接收及傳遞XML或其他格式資料。
  • xmlHttp:是經由Javascript程式產生出來的XMLHttpRequest物件,被命名為xmlHttp。

方法名稱說明
abort( ) 中止要求。
getAllResponseHeaders( ) 取得所有標頭字串值,以成對的「標頭字串/值」的方式回傳。
getResponseHeader( ) 傳回指定標頭字串值,send方法成功後,才可呼叫open( )建立和伺服器連線所需資料。
send( ) 向伺服器提出要求。
setRequestHeader( ) 設定標頭字串值。
屬性名稱 說明
onreadystatechange 是件處理器,每次對伺服器要求狀態改變時,就會觸動這個事件。
readyState XMLHttpRequest物件狀態值,可能的回傳值有:
0 = 還沒有開始
1 = 正在載入
2 = 載入完成
3 = 溝通中
4 = 動作完成
responseText 伺服器以文字型式回傳結果。
responseXML 伺服器以XML型式回傳結果,這裡的XML指和DOM相容文件即可。
status 伺服器回傳代表執行結果狀態。如200帶表完成,404代表找不到要求連線的字串。
statusText 伺服器回傳代表執行結果的文字, 和status是相對照的。




參考資料:維基百科、ASP.NET 4.0從零開始(C# 2010)


   

2013年1月9日 星期三

Visual C# 2010 建立ASP.NET網站(內建)資料庫 -- 20130108

建立ASP.NET網站(內建)資料庫:

步驟一、在SQL Server中,先創建一個新的資料庫。(如:Machine)




























步驟二、執行aspnet_regsql.exe,安裝過程中並指定資料庫。(如:Machine)
※路徑:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe


























步驟三、開啟IIS,設定[連線字串]。
※如:data source=.;Initial Catalog=Machine;User id =sa;PassWord=********




















步驟四、測試Provider連線是否成功。





























※以上的操作步驟,為了透過Visual Studio 2010內建的[ASP.NET組態],簡單的建立一組專案使用的資料庫。

2012年12月26日 星期三

Visual C# 2010 InSert資料進入Table,發生錯誤訊息-20121225

在新增資料進入Table時,跳出錯誤訊息:[字串或二進位資料會被截斷]

其發生的原因:當Data長度大於欄位定義長度時,且在Insert 或 Update就會發生此錯誤訊息。

2012年12月4日 星期二

Visual C# 2010 陣列搜尋、拷貝、清除 - 20121203

陣列的搜尋:

  • Array.IndexOf( )方法:用來搜尋陣列中是否有符合的資料,若有找到就傳回該陣列元素的[註標值];若沒有找到的話,會傳回-1。     
          公式:Array.IndexOf( 陣列名稱 , 查詢資料  [ , 起始註標] [ , 查詢距離] );

※若找到傳回該陣列元素的註標值;相反的,若沒找到就回傳-1 。此陣列不必先經過排序,故每次搜尋資料都是由最前面開始,但資料量大時,查詢所花費時間會越多。

※使用Array.IndexOf( )方法來搜尋陣列中的資料,不必先經過排序,每次搜尋資料都是由最前面開始,當資料量大時,愈後面的資料查詢所花費的時間愈多,且資料的平均搜尋時間不平均。

範例:字串陣列 KK中有{"A","B","C","D","E","F"}六個陣列元素,若Str="E", Start=0 , Offset=2,
            其Array.IndexOf(KK , Str , Start , Offset)

結果:由標註1(=B)開始往下找3個陣列元素(=B、C、D),其內容是否有"E",傳回的值為-1。

  • Array.BinarySearch( )方法:使用之前陣列必須先經由小而大排序才可,此方法適用資料量大的陣列。
          公式:Array.BinnarySearch( 陣列名稱 , 查詢資料 );

※此陣列必須先經過由小而大排序才可使用,適用於資料量大的陣列。

※使用Array.BinarySearch( )方法來二分化搜尋資料, 陣列必須先經過由小而大排序才可以使用,且此方法適用於資料量大的陣列中。


------------------------------------------------------------------------------------------------------

陣列的拷貝:

語法:Array.Copy( A , Aindex , B , Bindex , length );

  •          A:來源A陣列(被拷貝的陣列)。
  •  Aindex:來源A陣列的註標,由指定的註標開始複製。
  •          B:接收資料的目的B陣列。
  •  Bindex:目的B陣列的註標,由指定的註標開始儲存。
  •    length:複製的陣列元素個數。


陣列的清除:

語法:Array.Clear( A , Aindex , length );
  •          A:來源A陣列(被拷貝的陣列)。
  •  Aindex:來源A陣列的註標,由指定的註標開始清除。
  •    length:清除的陣列元素個數。

2012年12月1日 星期六

Visual C# 2010 陣列宣告、排序、反轉 - 20121130

陣列宣告方式:

方式一、資料型別 [ ] 陣列名稱;
                陣列名稱 = new 資料型別 [大小];

如:int [ ] myArray;
        myArray = new int[3];


方式二、資料型別 [ ] 陣列名稱 = new 資料型別[大小]{陣列初值};

如:int [ ] myArray = new int[3]{6,5,8}; 或 int [ ] myArray = new int[ ]{6,5,8};


※建立[陣列]時未設定初始值,如[數值資料型別]預設值為[零];[字串資料型別]預設為[null];[布林值資料型別]預設為[false]。



陣列的排序:此指定一維物件由[小而大]作遞增排序。

方法一、Array.Sort(陣列物件);

方法二、Array.Sort(陣列物件1,陣列物件2);


陣列的反轉:由[大而小]作遞減排列。

方法、Array.Reverse(陣列物件);

※陣列必須先作(Sort)排列後,在作(Reverse)反轉。
※假若同時有兩個相關的陣列A和B,若以A陣列為基準由大到小做排序,其相關陣列需要同時反轉。寫法如下:

Array.Sort(A,B);                 //將A陣列先做由小而大排序,B陣列亦跟著修改。
Array.Reverse(A);             //將A陣列先做反轉,變成由大而小排序。
Array.Reverse(B);             //將B陣列做反轉。