2007年9月10日 星期一

在用戶端上建立自訂的驗證邏輯

以 ECMAScript (JavaScript、JScript) 建立驗證函式。

下列程式碼範例會說明自訂的用戶端驗證。網頁的摘錄中會顯示 CustomValidator 控制項所參考的 TextBox 控制項。驗證控制項會呼叫名為 validateLength 的用戶端指令碼函式,確保使用者至少會在 TextBox 控制項中輸入八個字元。


ControlToValidate = "text1"
ErrorMessage = "You must enter at least 8 characters!"
ClientValidationFunction="validateLength" >

2007年9月4日 星期二

CalendarExtender控制項顯示重疊

解決AjaxControlToolkit中CalendarExtender控制項顯示重疊
[ 2007-06-16 09:02:19 | 作者: 景裔 ]
http://blog.breakN.net/feed.asp?q=comment&id=343
  在一個專案中使用了CalendarExtender控制項,方便選擇日期,有時候受顯示器解析度大小的關係會被一個其他的控制項遮住部分彈出的日期選擇區塊。解決這一問題需要下載AjaxControlToolkit源代碼,下載並用VS2005打開後找到Calendar目錄,打開Calendar.css文件。然後在.ajax__calendar_container中添加一個z-index的屬性就OK了
  PS:別忘了生成

CalendarExtender中文本地化支援

CalendarExtender中文本地化支援
CalendarExtender日曆默認是英文,如需要中文本地化支援
在asp:ScriptManager/中增加
EnableScriptGlobalization= "true"
EnableScriptLocalization="true"
兩個屬性即可。

在 ASP.Net 中避免使用者重複按下 Button

在 ASP.Net 中避免使用者重複按下 Button
有時在我們所開發的 Application 中,如果遇到較為複雜的處理程序或者資料庫交易時,會希望一般的 End User 不要重複按下按鍵,避免不斷的 Form Submit,導致交易或者處理程序失敗。

我們可以在 Form Load 事件中設定 Button1 的 Attributes 屬性,並加入以下相關程式碼:


Button1.Attributes("onclick") = "this.disabled = true;" + Me.GetPostBackEventReference(Me.Button1)

2007年8月28日 星期二

GridView 控制項─電子郵件的超連結

先將欄位轉換為 TemplateField
原本的是





更改為

' runat="server" NavigateUrl='<%# "mailto:" + eval("電子郵件1") %>'>

另外一種方式是,在「設計」模式轉換為 TemplateField 後,進入「編輯樣板」,刪除該欄位 ItemTemplate 原本的標籤(Label)控制項,新增超連結(HyperLink)控制項,針對進行「編輯 DataBindings...」,除將屬性"Text'繫結到電子郵件欄位(Bind("電子郵件1"))外,也將屬性"NavigateUrl'自訂繫結到電子郵件欄位("mailto:" + Eval("電子郵件1"))。

參考資料:董大偉著,ASP.NET 2.0深度剖析範例集 (博碩),博碩文化股份有限公司,95年4月,p. 14-1-4。

2007年8月26日 星期日

SQL 時間條件判斷

a month
select contid,id,rentedate from contractext where appyorn ='Y' AND (CONVERT(datetime, RENTEDATE, 112) - GETDATE() > 0) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)< convert(datetime,'19000202',112)) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)> convert(datetime,'19000129',112))

2 weeks
select contid,id,rentedate from contractext where appyorn ='Y' AND (CONVERT(datetime, RENTEDATE, 112) - GETDATE() > 0) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)< convert(datetime,'19000117',112)) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)> convert(datetime,'19000114',112))

a week
select contid,id,rentedate from contractext where appyorn ='Y' AND (CONVERT(datetime, RENTEDATE, 112) - GETDATE() > 0) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)< convert(datetime,'19000110',112)) and (convert(datetime,rentedate,112)-convert(datetime,getdate(),112)> convert(datetime,'19000107',112))

select convert(datetime,'20070928',112)-convert(datetime,'20070827',112)

select convert(datetime,'20070827',112)

select convert(datetime,'20070901',112)

2007年7月18日 星期三

何在 UpdatePanel 中輸出 JavaScript 指令以開啟警示視窗?

轉自http://phone.idv.tw/cs2/forums/thread/409.aspx

Johnny


註冊於09/15/2006
Taiwan
文章376


如何在 UpdatePanel 中輸出 JavaScript 指令以開啟警示視窗?
回覆 引用回覆
一般而言,如果我們需要對網頁輸出一段 JavaScript,通常只需要下 Response.Write("") 就可以了。然而如果你使用了 ASP.NET AJAX 的 UpdatePanel,你會發現錯誤!關於此點,我已寫在「惱人的 PageRequestManagerParserErrorException」這篇文章裡面。

我在文章中提到可以利用 ScriptManager.RegisterClientScriptBlock 這個方法來輸出 JavaScript。以下是針對我在「如何在 ASP.NET 程式中開啟一個 alert 小視窗?」裡面的範例程式所做的修改:

Public Shared Sub popMsgInsideUpdatePanel(ByVal message As String, _
Optional ByVal intervalCheckFocus As String = "700", _
Optional ByVal timeStayTop As String = "6000")
Dim js As String
js = " subWin = alert('" & Replace(message, "'", "\x27") & "');" & _
" timerID = setInterval('if (subWin != undefined) subWin.focus();', " & intervalCheckFocus & ");" & _
" setTimeout('clearInterval(timerID)', " & timeStayTop & ");"
ScriptManager.RegisterClientScriptBlock(CType(HttpContext.Current.Handler, Page), GetType(String), "js", js, True)
End Sub

請特別留意,使用 RegisterClientScriptBlock 方式輸出的 JavaScript 指令,請把 通通拿掉,否則會造成語法錯誤。