2008年11月25日 星期二

ASP.NET - UpdatePanel 與 JavaScript

在網頁中如果沒有放 UpdatePanel 要輸出 JavaScript 只要用
Response.Write("") 就可以了
但是如果網頁中放了 UpdatePanel 怎麼辦!?
這時就要用 ScriptManager.RegisterClientScriptBlock
來輸出 JavaScript 了
例~
ScriptManager.RegisterClientScriptBlock(Me.Page, GetType(String), "", "alert('lalala');", True)

注意
使用 ScriptManager.RegisterClientScriptBlock 時
javascript 不要加上 script 標籤

2008年11月18日 星期二

ASP.NET - 防止按鈕按二次

在 ASP.NET 1.0 時..
要在 Page_Load 中寫
Me.ButtonAddBack.Attributes("onclick") = "this.disabled = true;" & GetPostBackEventReference(ButtonAddBack).ToString

this.disabled=true; 是為了將按鈕反白無法啟用
後面加上 GetPostBackEventReference 是因為在 disabled 後不會執行 PostBack 動作,
所以要用GetPostBackEventReference(ButtonAddBack) 來模擬 PostBack
----

在 ASP.NET 2.0 時...
可以在 Button 的 OnClientClick 直按寫上 this.disabled = true;
再把 UseSubmitBehavior 屬性設為 false 就可以了

2008年11月7日 星期五

ASP.NET - System.OutOfMemoryException

在 ASP.NET 中出現了 System.OutOfMemoryException 的錯誤經估狗大神指點,原來是ASP.NET 佔了太多的記憶體了在工作管理員裡可以看到 w3wp.exe 佔的記憶體飊的超高,導致網頁出現錯誤
處理方式如下:
1. 在 Web.config 裡將 debug 和 trace 改為 false
2. 修改 %WINDIR%\Microsoft.NET\Framework\v1.1.4322\Aspnet.config 檔案
3. 將 IIS 的 應用程式集區的回收處理把預設的 1740分鐘回收一次改為固定時間回收

2008年11月6日 星期四

ASP.NET - TextBox Enter To Tab

function document.onkeydown()
{
if (window.event.srcElement.type == "text" && window.event.keyCode == 13)
{
window.event.keyCode = 9;
}
}
這一段 javascript 已經看了好幾次了,直到現在我才知道它的功用!
當頁面上的 TextBox 按下 Enter 時轉換成 Tab
目的是不觸發 TextBox 的 PostBack,跳到下一個控制項

VB.NET - Windows Form 將全型文字轉成半型

在 Visual Studio 2005 裡預設的輸入法為全型,所以可以用下列方式轉成半型
Me.txt_input.Text = StrConv(Me.txt_input.Text, VbStrConv.Narrow)

VB.NET - 按下 Enter 後 DataGridView 向右移動儲存格

1.按下 enter 後跳向某個指定欄位
if e.KeyValue = Keys.Enter then
Me.DataGridViewTransfer.CurrentCell = Me.DataGridViewTransfer.Rows(Me.DataGridViewTransfer.CurrentRow.Index - 1).Cells("TRAN_QTY")
end if

2.按下 enter 後跳向右邊欄位
if e.KeyValue = Keys.Enter then
Me.DataGridViewTransfer.CurrentCell = Me.DataGridViewTransfer.Rows(Me.DataGridViewTransfer.CurrentRow.Index - 1).Cells(Me.DataGridViewTransfer.CurrentCell.ColumnIndex + 1)
end if
3.當在最後一個欄位時,下個欄位回到第一個儲存格(需判斷是否已到最後一個欄位)
if e.KeyValue = Keys.Enter then
Me.DataGridViewTransfer.CurrentCell = Me.DataGridViewTransfer.Rows(Me.DataGridViewTransfer.CurrentRow.Index).Cells("PS_NO")
end if