Tuesday, June 12, 2007 - Posts

TIPS-Press Enter to Submit Web Page

大家應該都有過類似的需求吧? 網頁上有一些條件輸入的下拉選單、TextBox、Radio、CheckBox... 後方有一個查詢鈕。使用者多半會期待在輸入完文字後,按下Enter可以自動送出表單。

Browser有時會自動幫完成以上效果,但必須符合某些條件時才會成立,例如: Form中只有一個Button之類的。並不是所有情境都能滿足這些先決條件,於是我們看到開發人員開始大顯神威,用Javascript掛onkeydown,呼叫form.submit()... 忙得不亦樂乎。還有一種做法是用Page.RegisterHiddenField( "__EVENTTARGET", myButton.ClientID );的方式指定按Enter時要觸發的Button,但它也有一些情境上的限制(可以參考這篇Blog的詳細討論)。

好消息是ASP.NET 2.0裡新加了一個好用的屬性--DefaultButton,可以指定Form在按下Enter時預設要觸發的Submit Button。更棒的是,我們可以在Form裡插入多塊Panel Control,每個Panel都可以指定自己的DefaultButton,當焦點停在不同的Panel,按下Enter就會觸發該Panel自己的DefaultButton,在設計複雜的UI時,十分方便。

順便提一下,HtmlForm還加了另一個很讚的新屬性--DefaultFocus,可以指定網頁載入後,Focus要停在哪個Control上。在以前,這都得自己設法寫Javascript搞定,現在ASP.NET 2.0直接支援,雖是好事一椿,對我們這種曾經在Javascript下過苦功的老骨頭來說,與新鮮人的開發能力差距正快速縮小中,還真有點哭笑不得,哈!

SQLCLR-SqlString Max Size 8000 Limitation

我寫了一個SQLCLR的UDF(User Defined Function),對傳入的字串做了些處理再傳回:

   1:  [Microsoft.SqlServer.Server.SqlFunction]
   2:  public static SqlString DoSomething(SqlString inpString)
   3:  {
   4:  if (compString.IsNull)
   5:      return SqlString.Null;
   6:  else
   7:      return new SqlString(
   8:          MyUtilClass.Blah(inpString.ToString())
   9:      );
  10:  }

 起先測試一些小字串,結果都正常,沒想到要開始玩真的,傳入一個數百K的大字串時,卻傳回了以下的錯誤訊息:

System.Data.SqlServer.TruncationException: Trying to convert return value or output parameter of size 28726 bytes to a T-SQL type with a smaller size limit of 8000 bytes.

啥? SqlString只能被限制在8000 bytes的大小? 那麼SQL 2005的NVARCHAR(MAX)是在MAX心酸的嗎?

別激動! 其實只要加個小宣告SqlFacet(MaxSize=-1),問題就可以解決囉!

   1:  [Microsoft.SqlServer.Server.SqlFunction]
   2:  [return: SqlFacet(MaxSize = -1)]
   3:  public static SqlString DoSomething([SqlFacet(MaxSize = -1)] SqlString inpString)
   4:  {
   5:  if (compString.IsNull)
   6:      return SqlString.Null;
   7:  else
   8:      return new SqlString(
   9:          MyUtilClass.Blah(inpString.ToString())
  10:      );
  11:  }

 關於SqlFacet的說明,可以參考微軟的官方文件

Search

Go

<June 2007>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
 
RSS
【工商服務】


BlogLook Score and Rank

Syndication