TOP

[C#] DataView的RowFilter屬性

問題:DataView的RowFilter屬性使用方式

RowFilter使用時類式是SQL 語法的Where

Ex:
dv.RowFilter = string.Format("Account= '{0}'", AccountName);
就類式
select * from table where Account = 'AccountName'




參考資料:
http://msdn.microsoft.com/zh-tw/library/system.data.dataview.rowfilter(v=vs.80).aspx
http://60.251.1.52/taiwan/msdn/library/2003/sep-2003/vb03g9.htm
http://www.cnblogs.com/Spirithero/archive/2011/07/20/2111351.html

TOP

[C#]利用函式將字串補上0

問題:當利用迴圈建立1~12月份的下拉式選單後,將月份再轉至Datatime的函式時會發生錯誤

EX:
(1)For迴圈建立2012~2022年,1~12月及1~31日值放至下拉式選單
(2)下拉式選單選擇2012年3月1日
(3)合拼三個下拉式選單的數值得到的值為201231,在轉換至Datatime的函式時會發生錯誤,因為正確的值應該要為YYYYMMDD

解決方式:
PadLeft(固定幾位數,向左填補字元)
用PadLeft函式就可解決此問題,在左邊補上1個0


string str = "9";
str.PadLeft(2, '0') => 09

PadRight(固定幾位數,向右填補字元)
str.PadRight(2, '0') => 90

參考文章:
http://www.dotblogs.com.tw/aquarius6913/archive/2011/07/04/31031.aspx

TOP

[ASP.NET] 多國語系 GlobalResources vs LocalResources

目前的專案都已開發為全球化網頁,目前網頁內容最常需要顯示幾個語系為繁體、簡體、日文、英文
全球化網頁顯示又可以分成兩種方式
1.App_GlobalResources
2.App_LocalResources


範例1:使用App_GlobalResources 利用下拉式選單改變語系
1.建立Language.aspx
2.在Language.aspx內建立兩個Label及一個DropDownlist
3.建立App_GlobalResources資料夾
4.在App_GlobalResources資料夾建立語系檔
     (1)預設:Language.resx
     (2)英文:Language.en.resx
     (3)繁體中文:Language.zh-TW.resx
     ex: Language.resx輸入NAME及VALUE


5.設定Label要戴入的值
   (1)選擇Expressions
   (2)選擇Resources
   (3)輸入Classkey及ResourceKey



















6.設計ASPX:
   <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="<%$ Resources:Language, Baseball %>"></asp:Label>      
        <br />
        <asp:Label ID="Label3" runat="server" Text="<%$ Resources:Language, Basketball %>"></asp:Label>      
        <br />
        <br />    
        <asp:DropDownList ID="ddlLanguage" runat="server"  AutoPostBack="True"  ClientIDMode="Static">
            <asp:ListItem Value="zh-TW">中文</asp:ListItem>
            <asp:ListItem Value="en-US">英文</asp:ListItem>
            <asp:ListItem Value="ja-JP">日文</asp:ListItem>
        </asp:DropDownList>
    </div>
    </form>

7.程式碼ASPX.VB:

    Protected Overrides Sub InitializeCulture()
        If Request.Form("ddlLanguage") IsNot Nothing Then
            Page.UICulture = Request.Form("ddlLanguage")
        End If
    End Sub
8.完成,可以測試下拉式選單的多國語系。
9.如果在程式碼ASPX.VB內未增加下拉式選單,及 InitializeCulture()的條件,程式就會依當前視窗的語系做判斷,且刪除 第7項程式碼ASPX.VB內的程式判斷

可利用語言喜好設定做測試。



範例2:使用App_LocalResources 利用下拉式選單改變語系


1.建立Language-4.aspx
2.在Language-.aspx內建立兩個Label及一個DropDownlist
3.選擇Generate Local Resource

4.系統自動會在App_LocalResources 新增一個Language-4.resx
   建立語系檔:
     (1)預設:Language-4.resx
     (2)英文:Language-4.en.resx
     (3)繁體中文:Language-4.zh-TW.resx
     ex: Language-4.resx輸入NAME及VALUE

5.程式碼ASPX.VB:

    Protected Overrides Sub InitializeCulture()
        If Request.Form("ddlLanguage") IsNot Nothing Then
            Page.UICulture = Request.Form("ddlLanguage")
        End If
    End Sub
6.完成且可以測試下拉式選單的多國語系。
7.如果在程式碼ASPX.VB內未增加下拉式選單,及 InitializeCulture()的條件,程式就會依當前視窗的語系做判斷,且刪除 第5項程式碼ASPX.VB內的程式判斷

可利用語言喜好設定做測試。






ASP.NET 2.0多國語系參考資料:
http://www.dotblogs.com.tw/dotjum/archive/2008/06/04/4232.aspx

ASP.NET 4.0多國語系參考資料:
http://ms-net.blogspot.tw/2010/11/aspnet-40-multi-language-design-1.html
http://msdn.microsoft.com/zh-tw/library/fw69ke6f(v=vs.100).aspx
http://www.dotblogs.com.tw/ian/archive/2010/11/27/19758.aspx

Page.InitializeCulture方法參考資料:
http://msdn.microsoft.com/zh-tw/library/system.web.ui.page.initializeculture(v=vs.80).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Culture及UICulture屬性參考資料:
http://msdn.microsoft.com/zh-tw/library/bz9tc508(v=vs.80).aspx

CultureInfo類別的參考資料(含各語系的文化特性名稱):
http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo(v=vs.80).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-4
TOP

[ASP.NET] Page + UserControl 時事件觸發順序


1.第一次載入頁面時:
(1)Page Page_Load
(2)UserControlPage_Load
2.觸發PageControl的事件時:
(1)Page Page_Load
(2)UserControlPage_Load
(3)Page中控制項的事件
3.觸發UserControlControl的事件時:
(1)Page Page_Load
(2)UserControlPage_Load
(3) UserControl中控制項的事件
TOP

[ASP.net] regular expression validate

問題:使用者輸入E-MAIL時的格式錯誤,造成寄信時判斷問題解決方式:利用regular expression validate就可以排除使用者因為輸入錯誤e-mail造成的問題

要使用regular expression validate最好先知道他的符號的意思,不然就跟看外星文一樣,完全看不懂

E-Mail可以使用的驗證格式:"^([\w-\.]+)@(([\w-]+\.)+)([a-zA-Z]{2,4})$"

設計ASPX使用方式:

<asp:TextBox ID="email" runat="server">


<asp:RegularExpressionValidator ID="email_chk" runat="server" ErrorMessage="非E-MAIL 格式" ControlToValidate="email" ValidationExpression="^([\w-\.]+)@(([\w-]+\.)+)([a-zA-Z]{2,4})$">

原始檔ASPX.VB使用方式:

Dim EmailRegex As Regex = New Regex("^([\w-\.]+)@(([\w-]+\.)+)([a-zA-Z]{2,4})$")
EmailRegex.IsMatch(EMAIL)


基本的符號意思:

「^」表示是開始必須符合的格式
「$ 」表示是結尾必須符合的格式
「\w」表示英文或數字
「\d」表示只能為數字
「\.」表示 「.」,前面的 \ 為跳脫字元 (escape)
「\-」表示 「-」,前面的 \ 為跳脫字元 (escape)
「|」表示 or ,即左右兩邊只能出現其中一個
「+」表示出現 1 次以上
「*」表示出現 0 次以上
「A-Z」表示英文大寫 A ~ Z
「a-z」表示英文小寫 a ~ z
「0-9」表示數字 0 ~ 9,同「\d」
[A-Za-z0-9] 表示大小寫英文及數字的組合


E-Mail驗證格式拆解說明:
第一個部份^([\w-\.]+)@
「^」表示是開始必須符合的格式
「\w」表示英文或數字
「\.」表示 「.」,前面的 \ 為跳脫字元 (escape)
「+」表示出現 1 次以上
「@」表示E-MAIL使用的@
合併說明[\w-\.]+表示可以使用1次以上的英文或數字及小數點

第二個部份([\w-]+\.)+)
「\w」表示英文或數字
「+」表示出現 1 次以上
「\.」表示 「.」,前面的 \ 為跳脫字元 (escape)
合併說明([\w-]+\.)表示可以使用1次以上的英文或數字及小數點
合併說明(([\w-]+\.)+)
(1)([\w-]+\.)只能有一次COM.
(2)(([\w-]+\.)+)等於可以多次的([\w-]+\.)
     Ex: 
          GMAIL.COM.
          YAHOO.COM.TW
第三個部份([a-zA-Z]{2,4})
「A-Z」表示英文大寫 A ~ Z
「a-z」表示英文小寫 a ~ z
{2,4}表示2~4個位元


參考的資料來源:
http://www.cyut.edu.tw/~ckhung/b/re/intro.php
http://ithelp.ithome.com.tw/question/10094951
http://blog.roodo.com/rocksaying/archives/2670695.html
https://docs.google.com/a/gridow.com/document/d/1bUq0Jb1mLM7zmcVjDyLIX6UTLWGbKp-d99-w4rMrjvg/edit
http://www.cyut.edu.tw/~ckhung/b/gnu/regexp.php

http://ithelp.ithome.com.tw/question/10027862
http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/



TOP

[HTML] 限制Table欄位寬度

問題:原Table的width設定寬度,但會發生輸入的資料超過原寬度會造成畫面變形
解決方式:於Table內增加
 style="word-break:break-all"
未限制Table欄位寬度的HTML:

<Table width="500">


限制Table欄位寬度的HTML:

<Table width="500" style="word-break:break-all">