2008年12月12日 星期五

ASP.NET - Crystal Report 加入圖片

要如何在 CrystalReport 裡加入圖片?
大致上的動作就是先將圖片以 byte 存到 DataTable 中,再輸出

Dim objBitmap As New Bitmap("圖片的路徑")
Dim ms As New System.IO.MemoryStream
Dim ImgFormat As System.Drawing.Imaging.ImageFormat
Dim PicTB As New DataTable
Dim row As DataRow

objBitmap.Save(ms, ImgFormat.jpeg)

PicTB.TableName = "ShowPicture"
PicTB.Columns.Add("PIC", System.Type.GetType("System.Byte[]"))
row = PicTB.NewRow row(0) = ms.ToArray

PicTB.Rows.Add(row)

CrystalReportSource.ReportDocument.SetDataSource(PicTB)

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