2011年10月23日 星期日

ASP 滑鼠(Mouse)變更Button樣式

當我滑鼠(Mouse)移動到Button上時,想要改變Button顯示的圖片.形狀或樣式等等,可以用onmouseoveronmouseout屬性控制

當滑鼠移動到按鈕上時,用onmouseover更改

當滑鼠離開到按鈕上時,用onmouseout去做更改

範例:
<asp:Button ID="Button1" Text="點擊" onmouseover="this.style.fontWeight='bold'" onmouseout="this.style.fontWeight=''" />

可以配合css做更嚴謹的設定,以達到完美的變更樣式

回目錄
回首頁

2011年10月9日 星期日

Blogger 加入 FaceBook 留言功能

最近為了部落格的流量,所以利用 FaceBook 的延伸性,以便更多人知道我部落格,讓大家也來一起討論。

我下方加了一個 facebook 留言版,則可與 blogger 結合,盡而推廣自己的網誌,但,最重要的還是內容要為廣大鄉民的需求。

留言版的加入可以參考:2011〔新〕在Blogger文章加上Facebook留言功能
blogger安裝facebook可管理的留言版

回首頁

2011年10月2日 星期日

ASP連結資料庫參數

SqlConnection.ConnectionString 屬性

命名空間:System.Data.SqlClient

基本語法:
Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=(local)

下列表格列出ConnectionString關鍵字的有效名稱

關鍵字預設描述
AddrN/A資料來源的同義字。
AddressN/A資料來源的同義字。
AppN/A應用程式名稱的同義字。
Application NameN/A應用程式的名稱,如果沒有提供應用程式名稱,則為 '.NET SQLClient Data Provider'。
應用程式名稱可以有 128 個 (含) 以下的字元。
Asynchronous Processing
-或-
Async
'false' 如果為 true,啟用非同步作業支援。可辨認的值為 true、false、yes 和 no。
AttachDBFilename
-或-
Extended Properties
-或-
Initial File Name
N/A主要資料庫檔案的名稱,包括可附加資料庫的完整路徑名稱。只有具有 .mdf 副檔名的主要資料檔案才能支援 AttachDBFilename。
如果在連接字串中指定了 AttachDBFileName 索引鍵的值,則會附加資料庫,而且資料庫會變成連線的預設資料庫。
如果不指定此索引鍵,且若先前已附加資料庫,該不會重新附加此資料庫。先前附加的資料庫會做為連接的預設資料庫。
如果和 AttachDBFileName 索引鍵一同指定此索引鍵,會以此索引鍵的值為別名。但是,如果另一個附加的資料庫已使用該名稱,則連線會失敗。
藉由使用 DataDirectory 替換字串,路徑可以是絕對或相對路徑。如果使用 DataDirectory,則資料庫檔案必須存在於替換字串指向之目錄的子目錄。
注意事項
不支援遠端伺服器、HTTP 和 UNC 路徑名稱。
必須使用關鍵字 'database' (或其中一個別名 (Alias)) 指定資料庫名稱,如下所示:
"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

如果記錄檔出現在與資料檔案相同的目錄中,而且在嘗試附加主要資料檔案時使用了 'database' 關鍵字,便會產生錯誤。在這種情況下,請移除該記錄檔。附加資料庫之後,便會自動依據實體路徑來產生新的記錄檔。
Connection Lifetime
-或-
Load Balance Timeout
0當連接傳回集區時,其建立時間會與目前時間相比較,如果該時間 (以秒為單位) 超過 Connection Lifetime 指定的值,則會終結連接。這有助於在叢集組態中強制進行執行中伺服器和剛上線伺服器之間的負載平衡 (Load Balancing)。
零 (0) 的值會導致共用連接產生連接上限逾時的狀況。
Connect Timeout
-或-
Connection Timeout
-或-
Timeout
15在終止嘗試並產生錯誤之前,要等待伺服器連接的時間長度 (以秒為單位)。
有效的值會大於或等於 0,而且小於或等於 2147483647。
Context Connection'false'如果應該建立與 SQL Server 的同處理序連接,則為 true。
Current Language
-或-
Language
N/A>設定用於資料庫伺服器警告或錯誤訊息的語言。
語言名稱可以有 128 個 (含) 以下的字元。
Data Source
-或-
Server
-或-
Address
-或-
Addr
-或-
Network Address
N/A要連接 SQL Server 的執行個體之名稱或網路位址。可在伺服器名稱後指定通訊埠編號:
server=tcp:servername, portnumber

指定本機執行個體時,永遠使用 (local)。若要強制通訊協定,請加入下列其中一個前置詞:
np:(local), tcp:(local), lpc:(local)

資料來源必須使用 TCP 格式或具名管道格式。
TCP 格式如下:
  • tcp:<主機名稱>\<執行個體名稱>
  • tcp:<主機名稱>,<TCP/IP 連接埠號碼>
TCP 格式必須是以前置詞 "tcp:" 開頭,後面接著資料庫執行個體,如主機名稱和執行個體名稱所指定。
主機名稱必須以下列其中一種方式指定:
  • NetBIOSName
  • IPv4Address
  • IPv6Address
執行個體名稱用於解析為資料庫執行個體裝載所在的特定 TCP/IP 連接埠號碼。或者,也可以直接指定 TCP/IP 連接埠號碼。如果兩個執行個體名稱和連接埠號碼都不存在,則會使用預設的資料庫執行個體。
具名管道的格式如下:
  • np:\\<主機名稱>\pipe\<管道名稱>
具名管道格式必須以前置詞 "np:" 開頭,後面跟著具名管道名稱。
主機名稱必須以下列其中一種方式指定:
  • NetBIOSName
  • IPv4Address
  • IPv6Address
管道名稱用於識別 .NET Framework 連接目標的資料庫執行個體。
如果指定了 Network 索引鍵的值,不應指定前置詞 "tcp:" 與 "np:"。
注意事項
ADO.NET 2.0 不支援 SQL Server 2000 (含) 以下版本在共用記憶體上使用非同步的命令。不過,您可以強制使用 TCP 來取代共用記憶體,方法是在連接字串的伺服器名稱前面加上 tcp: 前置字元,或是使用 localhost。
Encrypt'false'當為true時,如果伺服器已安裝憑證,則 SQL Server 會在用戶端與伺服器之間的所有資料上使用 SSL 加密 (Encryption)。可辨認的值為true、false、yes和no。
Enlist'true'true表示,SQL Server 連接集區工具會在建立執行緒的目前交易內容中自動登記連接。
Failover PartnerN/A容錯移轉合作夥伴的名稱,其中設定資料庫鏡像。如果此索引鍵的值是 "",則初始目錄必須存在,並且它的值不能為 ""。
伺服器名稱可以有 128 個 (含) 以下的字元。
如果您指定容錯移轉合作夥伴,但未對合作夥伴伺服器進行資料庫鏡射設定,且主要伺服器不可用,則會連線失敗。
如果您指定容錯移轉合作夥伴,且未對主要伺服器進行資料庫鏡射設定,若主要伺服器可用,則可成功連接主要伺服器 (以 Server 關鍵字指定)。
.NET Framework 1.0 或 1.1 版不支援 Failover Partner 關鍵字。
Initial Catalog
-或-
Database
N/A資料庫的名稱。
資料庫名稱可以有 128 個 (含) 以下的字元。
Integrated Security
-或-
Trusted_Connection
'false' 如果為false,則會在連接中指定使用者 ID 和密碼。如果為true,則會使用目前的 Windows 帳戶認證進行驗證。
可辨認的值為 true、false、yes、no 和 sspi (建議使用),其相當於 true。如果使用者識別碼和密碼已指定,且整合安全性設定設為 true,則會略過使用者識別碼和密碼,並使用整合式安全性。
Min Pool Size0集區中允許連接的最小數目。
有效值大於或等於 0。在這個欄位中的零 (0) 表示最初未開啟最小連接數目。
大於 Max Pool Size 的值會產生錯誤。
Max Pool Size100集區中允許的最大連接數目。
有效值大於或等於 1。小於 Min Pool Size 的值會產生錯誤。
MultipleActiveResultSets'false'如果為true,則應用程式可維護 Multiple Active Result Set (MARS)。如果為 false,則應用程式必須處理或取消一個批次的所有結果集,才能夠執行該連接的其他批次。
辨認的值為true 和 false。
.NET Framework 1.0 或 1.1 版不支援該關鍵字。
Network Library
-或-
Network
-或-
Net
N/A網路程式庫用來建立 SQL Server 的執行個體的連接。支援的值包含:
dbnmpntw (具名管道)
dbmsrpcn (多重通訊協定、Windows RPC)
dbmsadsn (Apple Talk)
dbmsgnet (VIA)
dbmslpcn (共用記憶體)
dbmsspxn (IPX/SPX)
dbmssocn (TCP/IP)
dbmsvinn (Banyan Vines)
對應的網路 DLL 必須安裝在您連接的系統上。如果您沒有指定網路而且使用本機伺服器 (例如 "." 或 "(local)"),則會使用共用記憶體。在這個範例中,網路程式庫是 Win32 Winsock TCP/IP (dbmssocn),1433 則是使用的通訊埠。

Network Library=dbmssocn;Data Source=000.000.000.000,1433;
Packet Size8192用來與 SQL Server 的執行個體通訊的網路封包之大小 (以位元組為單位)。
封包大小可以大於或等於 512,並且小於或等於 32767。
Password
-或-
PWD
N/A正在登入之 SQL Server 帳戶的密碼。不建議使用。為了維持高安全性等級,強烈建議您改為使用Integrated Security或Trusted_Connection 關鍵字。
密碼必須在 128 個字元 (含) 以下。
Persist Security Info
-或-
PersistSecurityInfo
'false'當設定為false或no(建議使用) 時,如果連接開啟或曾經處於開啟狀態,則不會將安全性相關資訊 (如密碼) 當做連接的一部分傳回。重設連接字串會將所有包含密碼的連接字串值重設。可辨認的值為 true、false、 和 no。
Pooling'true'當此索引鍵的值設定為 true 時,任何新建立的連接會在由應用程式關閉時加入至集區。下次嘗試開啟同一個連線時,會從集區擷取該連線。
如果這些連線具有相同的連接字串,則視為相同。不同的連線會有不同的連接字串。
此索引鍵的值可以是 "true"、"false"、"yes" 或 "no"。
Replication'false'如果使用連接時支援複寫,則為true。
Transaction BindingImplicit Unbind控制與已登記之System.Transactions交易的連接關聯。
可能值為:
Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

隱含解除繫結會造成連接在結束時與交易中斷。在中斷連結之後,會在自動認可模式中執行其他的連接要求。如果在交易為作用中時執行要求,便不會檢查System.Transactions.Transaction.Current屬性。在交易結束之後,會在自動認可模式中執行其他要求。
如果系統在完成最後一個指令之前結束交易 (在使用區塊的範圍中),會擲回InvalidOperationException。明確解除繫結會造成連接與交易保持在附加狀態,除非連接關閉或呼叫明確的SqlConnection.TransactionEnlist(null)。從 .NET Framework 4 版 開始,對 Implicit Unbind (隱含解除繫結) 有所變更,造成 Explicit Unbind (明確解除繫結) 已經過時。如果Transaction.Current不是已登記的交易或如果已登記的交易不是作用中時,便會擲回 InvalidOperationException。
TrustServerCertificate'false'設為 true時,SSL 會用來加密通道,但略過驗證信任的憑證鏈結查核。如果 TrustServerCertificate 設定為 true且 Encrypt 設定為false,則不會加密通道。可辨認的值為true、false、yes和 no。如需詳細資訊,請參閱連接字串語法 (ADO.NET)
Type System VersionN/A字串值,表示應用程式預期的型別系統。可能值為:
Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=SQL Server 2008;

Type System Version=Latest;

設為>SQL Server 2000時,會使用 SQL Server 2000 型別系統。連接到 SQL Server 2005 執行個體時,會執行下列轉換:
XML 轉換成 NTEXT
UDT 轉換成 VARBINARY
VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分別轉換成 TEXT、NEXT 和 IMAGE。
設為SQL Server 2005時,會使用 SQL Server 2005 型別系統。對於目前版本的 ADO.NET,不執行任何轉換。
設為Latest時,使用這個主從組能處理的最新版本。當用戶端和伺服器元件更新時,這也會自動更新。
User ID
-或-
UID
-或-
N/ASQL Server 登入帳戶。不建議使用。為了維持高安全性等級,強烈建議您改為使用 Integrated Security 或Trusted_Connection關鍵字。
使用者 ID 必須在 128 個字元 (含) 以下。
User Instance'false'值,指出是否將連接從預設 SQL Server Express 執行個體,重新導向至在呼叫端帳戶下執行之執行階段啟始的執行個體。
Workstation ID
-或-
WSID
本機電腦名稱連接至 SQL Server 的工作站名稱。
ID 必須在 128 個字元 (含) 以下。

回目錄
回首頁

2011年10月1日 星期六

Wizard 控制項簡介

個人覺得(應該也很多人這麼覺得)ASP.NET好用的地方之一就是它強大豐富且滑鼠拖拉一下就可以用的眾多控制項。不過這篇文章要講的Wizard控制項說不上太強大,不過在做一些特定的任務時可以少刻一些手工。

如果你有多年的Windows使用經驗,對Wizard應該不陌生,翻成中文或許比較熟悉:「精靈」(把Wizard翻譯成精靈實在是很強大),那種小時候安裝遊戲讓你一直按「下一步」、「下一步」到完成的玩意兒。
image
ASP.NET的Wizard控制項也是這麼一回事,設計一個流程來對使用者收集資料,最常用的就是網路購物結帳的例子。從工具箱拖出Wizard控制項我們可以看到一個雪白的框、裡面有兩個叫Step的超連結,還有一個「下一頁」按鈕。
image
可以用「自動格式化」選一個外觀。
image
選「新增/移除WizardStep」來規劃我們想要的步驟。在這裡我加入三個Step,Title分別命名為Step 3, Step4, Step5。
edit_step
點選左方的Step就可以編輯裡面的內容,可以依自己的需求設計表單來收集使用者輸入的資料。

這些Steps在.aspx是這樣呈現的:
<WizardSteps>
    <asp:WizardStep runat="server" title="Step 1">
        1st Step
    </asp:WizardStep>
    <asp:WizardStep runat="server" title="Step 2">
        2nd Step
    </asp:WizardStep>
    <asp:WizardStep runat="server" Title="Step 3">
        3rd Step
    </asp:WizardStep>
    <asp:WizardStep runat="server" Title="Step 4">
        4th Step
    </asp:WizardStep>
    <asp:WizardStep runat="server" Title="Step 5">
        5th Step
    </asp:WizardStep>
</WizardSteps>

沒錯,其實所有的Steps都是塞在Wizard控制項裡,包括文字、資料項,所以可以想像只要實作Wizard的邏輯和收集的表單資料稍微複雜就會全部擠在一起,用使用者控制項包起來,算是一種解決辦法,只是看起來還是有點亂。

next_click

要讓使用者選擇不同的選項在按下下一頁之後跳到不同的步驟很簡單,在屬性裡的事件頁籤點兩下NextButtonClick這個動作,就會新增一個名為Wizard1_NextButtonClick的函式。

protected void Wizard1_NextButtonClick(object sender, 
WizardNavigationEventArgs e)
{
    if (Wizard1.ActiveStepIndex == 0)
    {
        if (RadioButtonList1.SelectedValue.Equals("Male"))
            Wizard1.ActiveStepIndex = 3;
        if (RadioButtonList1.SelectedValue.Equals("Female"))
            Wizard1.ActiveStepIndex = 4;
    }
}

Wizard1.ActiveStepIndex是目前的步驟索引,要注意的是它是從零開始,照這個程式碼選了Male之後按下一步會跳到Step4,選Female則是跳到Step5,而不是步驟3和4。



詳細的屬性及方法請參照[MSDN]Wizard Class

2357244 elf

P.S. 看看左圖的萬磁王再看看右圖,Wizard翻成精靈或許不是沒有道理。

回目錄
回首頁



ASP網頁資訊傳遞 方法比較

有在設計網頁的基本上都會遇到
這邊介紹各種記錄瀏覽資訊的方法


(還有一種不在表內:Cache)

ViewState
1.只儲存目前瀏覽的那一頁,通常是記錄PostBack的值
2.原理:Html上Hidden Field,透過Base-64編碼
3.可在WebConfig設定使其加密:<Pages ViewStateEncryptionMode="Always" />

Session
1.可用於不同頁面,資訊儲存於Server端,通常用來傳遞重要或須保密的參數
2.佔用Server端的記憶體空間,如同一時間連線量過大,容易使記憶體損壞
3.可設定存活時間,如果中途發生錯誤或某些情況時,會使得Session遺失

Cookies
1.存於Cloent端,還讀的到即表示資料還可使用
2.因為是存在Cloent端,所以容易被竊取裡面的資訊,因此最好不要儲存重要或須保密的資訊
3.有些Single Sign On會透過Cookie加密來存放帳號資訊
4.String的存放格式

Application
1.所有User存取Server端內同一份
2.只有在Web application關閉或重新啟動時才會清除
3.與Session一樣吃Server端記憶體

Cache
1.通常應用於靜態網頁快取
2.可設定時間ˋHit Rate或First In First Out當作條件
3.同Session與Application吃Server端記憶體


補充資料:


回目錄
回首頁