2007/05/07

動態新增控制項 四步驟

1.控制項建立(Control Creation),在頁面處理時,產生控制項。
2.控制項命名(Control Naming)與套用事件處理常式。
3.控制項資料存取(Control Access)。
4.控制項資料與狀態保存(Control State Persistent)。




標籤: ,

2007/02/10

RegisterClientScriptBlock 遇上 Postback

之前使用.NET裡面的ClientScript.RegisterClientScriptBlock
在PageLoad裡面使用他
以為他只要初始劃一次而已
所以就把這個註冊ClientScript的程式
用判斷isPostback包起來
導致只有第一次PageLoad會把Script註冊到前端
但是當我頁面上有其他的Postback後
他就不會把Script寫入前端
就會導致程式出錯
所以在使用此class的時候 要注意阿

標籤: ,

2006/10/08

教學:如何寄MAIL

Dim objmail As New System.Web.Mail.MailMessage
objmail.From = "寄件者的MAIL"
objmail.To = "收件者的MAIL"

//以下是用下拉式選單做到選擇內文的格式




Select Case DDList3.SelectedValue
Case 0 objmail.BodyFormat = MailFormat.Text
Case 1 objmail.BodyFormat = MailFormat.Html
End Select

//以下是用下拉式選單做到選擇內文編碼格式



Select Case DDList4.SelectedValue
Case 0 objmail.BodyEncoding = Encoding.UTF8
Case 1 objmail.BodyEncoding = Encoding.UTF7
Case 2 objmail.BodyEncoding = Encoding.ASCII
Case 3 objmail.BodyEncoding = Encoding.Unicode
End Select

objmail.Subject = "郵件的主旨"
objmail.Body = "郵件的內文"

//以下是確認是否有附加檔案






If mailfile.PostedFile.ContentLength > 0 Then
Dim attachfile As New MailAttachment(mailfile.PostedFile.FileName())
objmail.Attachments.Add(attachfile)
End If

//下面這三行用來設定SMTP SERVER的認證 帳號密碼用的

//經驗:先前在公司電腦不需要加這三行, 只需要設定SMTP SERVER即可,
//應該是公司的電腦已經加入網域, 所以不需要對公司的mail server再認證,
//但是最近我在自己電腦上用mdaemon來架mail server, 先前寫的卻不行,
//但是加上以下三行即可 寄出
//否則會出現錯誤訊息"伺服器拒絕了一個或多個收件者地址。伺服器的回應為:550..."







objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/
smtpauthenticate", "1")
objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/
sendusername", "SMTP SERVER帳號")
objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/
sendpassword", "SMTP SERVER密碼")

SmtpMail.SmtpServer = "MAIL SERVER ADDRESS"

SmtpMail.Send(objmail)

標籤: ,

問題: 無法在WEB伺服器上啟動偵錯...

解決方式一
去修改Web.config裡面的Debug=True

解決方式二
請加入上'Debugger Users'的權限

解決方式三
載IIS裡面將此專案的資料夾設定成"WEB應用程式"

標籤: ,

2006/07/14

Asp.Net2.0的GridView如何匯出成EXCEL?

在Asp .Net 1.1的時代
我們只要把資料導入DataGrid然後用以下程式碼即可串流輸出成Excel的檔案類型!
*********************************************
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
DataGrid.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()
*********************************************

但是到了Asp .Net 2.0 如果照原本的做法, 換到GridView上面, 就會發生錯誤!
錯誤訊息會叫使用者把GridView放置在有runat="server"的表單裡面!
但是使用者如果是使用VS2005的編譯環境, 應該都會放置在runat="server"
的Form裡面, 但是還是會有這樣的錯誤!
所以只需要在程式碼裡面加上以下的code即可讓GridView能像DataGrid一樣
正常運作!!!!匯出成Excel的檔案!
*************************************************
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

End Sub
*************************************************

標籤: , ,

2006/04/12

教學:如何動態加入user control ?

如果你已經有自己寫好的控制項, 又想要動態加入的話!!!
就用LoadControl("*.ascx") 就可以啦!
C# :
**************************************************
Control ucMode = LoadControl("XXX.ASCX");
this.FindControl("FORM").Controls.Clear();
this.FindControl("FORM").Controls.Add(ucMode);
**************************************************

VB :
**************************************************
Dim ucMode As Control = LoadControl("XXX.ASCX")
Me.FindControl("FORM").Controls.Clear()
Me.FindControl("FORM").Controls.Add(ucMode)
**************************************************

標籤: , ,

2006/04/07

教學:How to 執行檔案!

*****************************
System.Diagnostics.Process.Start("路徑","參數")
*****************************

標籤: ,

教學:動態改變網頁title !

1.把網頁的title tag改成Runat Server!
*********************************
<title id="webtitle" runat=server></title>
*********************************

2.宣告HTML控制項!
VB
*********************************
Protected WithEvents webtitle As HtmlGenericControl
'OR
Protected WithEvents webtitle As HtmlContainerControl
*********************************
C#
*********************************
protected HtmlGenericControl webtitle;
//OR
protected HtmlContainerControl webtitle;
*********************************

3.在PAGE_LOAD中設定TITLE名稱!
VB
*********************************
Me.webtitle.InnerHtml = "XXX討論區"
*********************************
C#
*********************************
this.webtitle.InnerHtml="XXX討論區";
*********************************

標籤: ,

教學:如何讓網頁在一定的秒數內轉向到其他頁面?

*****************************
Response.AppendHeader("Refresh", "5; URL=XXX.aspx")
*****************************

標籤: ,

教學:How to make a 多載函數?

這也是最近我才發現VB跟C++一樣可以有多載函數的功能!
C#就不用說了!他跟C++根本就如出一冊!
不過寫法都大同小異.....

就已VB為例!
*******************************************
Public Class className

Public function funcName()
.......
...
.........
end function

Public function funcName(ByVal num as integer)
.......
...
.........
..............
end function

Public function funcName(ByVal str as string)
.......
...
.........
......
end function

end calss
*******************************************

因為 funcName這個function被重複宣告三次;差別只在於傳入的值不同;
所以宣告的時候不會出現因為函數名稱相同而導致的錯誤!
這樣的寫法;就是一個多載函數!
在別的地方引用,就會根據你傳入的值,還會導入不同的FUNC裡面做動作!

標籤: , ,

2006/04/06

教學:如何將datagrid匯出Excel在client side!

1.首先,將DB裡面的資料撈出來放在datagrid裡面!
2.將下面的程式COPY 使用之!!即可response成Excel在client side摟!
*******************************
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
DataGrid1.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()
*******************************

標籤: ,

錯誤訊息:組態錯誤

遇到有關組態錯誤的訊息!
那麻煩檢查一下您的網站所在目錄的權限是否有設定好!
目錄及檔案皆需設定 for everyone 和 IUSER_電腦名稱

標籤: ,

錯誤訊息:具有潛在危險 Request.Form 的值...

如果使用者submit的內容有不安全的值
ASP.NET預設會擋掉!
例如一些 tag(HTML)或是 SQL指令!
怎樣解除這個好心的防護呢?

如果只想再某一頁裡面取消!
*****************************
<%@ Page Language="VB" validaterequest="false" %>
*****************************
這樣就好啦~~~重點是validaterequest="false" 這串歐!


如果想要整個專案都解除!
那請在Web.config裡面設定之!
*****************************
<system.web>
<pages validateRequest="false" />
</system.web>
*****************************

標籤: ,

2006/04/04

教學:How to 引用function ?

I.
假設您常用的function都在同一個page裡面,且在同一個porject裡面!
1.先 imports 專案名稱.頁面名稱
2.dim newfuncnamespace as new 專案名稱.頁面名稱
3.[call] newfuncnamespace.函數名稱


II.
假設您常用的function在另外的project!
先看這個教學把DLL加入參考!

然後~~~~


1.先 imports 專案名稱.頁面名稱
2.dim newfuncnamespace as new 專案名稱.頁面名稱
3.[call] newfuncnamespace.函數名稱

標籤: ,

教學:如何共用function from other project ?

假設在某個project裡面想引用某一個project裡面的某個頁面的某個function,最蠢的方式就是把那個頁面複製過來!

不然就看以下的教學摟!


第一步:開啟新的專案!
第二步:方案總管理面;在參考上按下滑鼠右鍵!




第三步:選擇加入參考!



第四步:選擇專案籤頁!
第五步:按下瀏覽;到您想要加入function所在專案的資料夾;再開啟裡面的Bin資料夾;選取裡面的DLL檔;然後加入!即可!

Posted by Picasa














相關教學:如何引用function

標籤: ,

教學:為什麼ASP.NET一定要設定應用程式才能RUN?

因為VS.NET建立後一定會有個BIN資料夾!裡面有編譯後的DLL檔!
所以需要設定應用程式才能RUN!


Posted by Picasa

標籤: ,

教學:How to 清除快取?

****************Code***************************
Response.CacheControl = "no-cache"
Response.AddHeader("Pragma", "no-cache")
Response.Expires = -1
***********************************************


以上語法ASP OR ASP.NET通用!

標籤: , ,

教學:有時後宣告控制項要加上NEW;有時候卻不用?

.NET的類別有無法被繼承,必需初始化才可使用,而初始化就是用 NEW 這個關鍵字。
例如當你宣告一個 OleDbConnection 的物件時可以這樣宣告:
Dim myConnection as System.Data.OLeDb.OledbConnection=New System.Data.OLeDb.OledbConnection(ConnectionString)
Dim myConnection as New System.Data.OLeDb.OledbConnection(ConnectionString)

標籤: , ,

教學:FILE Tag 裡面 Accept 屬性無效!

又再次被ASP.NET乎巄了!
之前在寫個BLOG上傳功能!
想說要限定只能上傳圖片檔;查書後就看到Accept = "image/gif,image/jpeg"
這個屬性!後來怎樣設定都沒辦法限定上傳檔案只能選圖片檔!
WHY?...........
因為IE沒有支援這個屬性!!
還真奇怪!!

標籤: ,

教學:Request.Browser.Cookies無法偵測瀏覽器是否開啟cookie功能!

哈!
因為~Request.Browser.Cookies只是偵測client side的瀏覽器是否有cookie的功能!
並不是偵測有沒有開啟接受cookie的功能!

害我搞超久的!機車!

標籤: ,