2015年5月24日 星期日

VB.NET 應用篇


2018/05/12
參考資料:自訂數值格式字串
當我的資料是9.50,要格式化為9.5,可以使用String.Format來作,方法如下。
'記得要Imports System.Globalization
String.Format(CultureInfo.InvariantCulture, "{0:0.0}",CDbl("9.50").ToString))

2017/10/14
假設今天資料庫的資料某個欄位值與某家公司所規定的值不一樣,但你希望資料庫的資料可以跟某家公司所規定的值一樣,舉個例子,如下:
我的資料庫值1、2、3
1 代表 身心障礙人士子女(重度、極重度)
2 代表 身心障礙人士子女(中度)
3 代表 身心障礙人士子女(輕度)

某家公司規定的值A1、A2、A3
A1 代表 極重度/重度身心障礙人士子女
A2 代表 中度身心障礙人士子女
A3 代表 輕度身心障礙人士子女

如果我要把我的值1、2、3,替換成A1、A2、A3,我們可以這樣作,如下:
Dim DType = New Dictionary(Of String, String)
DType.Add("1", "A1")
DType.Add("2", "A2")
DType.Add("3", "A3")

MsgBox(DType("1") & vbNewLine & DType("2") & vbNewLine & DType("3"))
'顯示出來的結果會是A1、A2、A3

2017/08/27
1.四捨五入
Dim d1 As Decimal = 4.69
Response.Write("d1=" & d1 & "<br/>")
Response.Write("d1/100=" & (d1 / 100) & "<br/>")
Response.Write("d1四捨五入到小數點第一位=" & Math.Round(d1, 1, MidpointRounding.AwayFromZero) & "<br/>")
Response.Write("d1四捨五入=" & Math.Round(d1, MidpointRounding.AwayFromZero) & "<br/>")
2.取得圖片高度、寬度
Dim b As System.Drawing.Bitmap = New System.Drawing.Bitmap(Server.MapPath("~/img/test.jpg"))
Response.write("Width=" & b.Width & " Height=" & b.Height)
b.Dispose()

2017/07/19
參考資料:Optional (Visual Basic)
有時候我會把一些常用到的程式碼寫成方法,要用的時候可以去呼叫它,呼叫方法時常需要給它很多參數資料,有些參數我不見得要給它值,希望它可以使用預設值,那我就可以在ByVal前面加上Optional,代表這個參數可有可無不見得要給它參數值,但是必須定義一個預設值給它,如下:
Sub fun1(ByVal a1 As Integer,Optional ByVal s1 As String = "s1", Optional ByVal s2 As String = "s2",Optional ByVal us_a1 As UShort = 0)
...
End Sub
如果在呼叫的過程中,我只想給s2這個參數給它一個值,那我可以這樣子給s2值,如下:
'方法1
fun1(100,s2:="Hello")
'方法2
fun1(100, ,"Hello")
我個人比較喜歡方法1,比較明確。

2017/06/27
判斷日期是否有效,例如:2017/06/27。
Dim str_date As String="2017/06/27"
If (IsDate(str_date)) = False Or (IsDate(str_date) = True And (str_date.Length < 10 Or str_date.Length > 10)) Then
'錯誤
Else
'符合2017/06/27
End If

2016/02/22
判斷IP是否有效。
  If Net.IPAddress.TryParse("140.130.192.3", Nothing) Then
    '有效
  Else
    '無效
  End If

2016/01/31
CheckBoxList項目存不存在
  If CheckBoxList1.Items.FindByValue("A") IsNot Nothing Then
    '存在
  Else
    '不存在
  End If

2015/12/13
VB.NET Winform 使用MoveDirectory(移動目錄)
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '將Directory1目錄(包含裡面的檔案)搬移到Directory2目錄
    '補充:如果你想要搬移資料夾且修改資料夾的名稱,你可以將C:\Directory2\Directory1改為C:\Directory2\ABC
    My.Computer.FileSystem.MoveDirectory("C:\Directory1", "C:\Directory2\Directory1")
  End Sub

2015/06/29
參考:規則運算式語言-快速參考Regex.IsMatch 方法
用正規表示式判斷是否為數字
     If Regex.IsMatch("123", "^\d+$") = False Then '數字會回傳true
        '不是數字
     Else
        '是數字
     End If

2015/05/25
1.取得星期幾
        Dim objd1 As Date = New Date()
        objd1 = "2014-12-01 08:52"
        Response.Write("objd1=" & objd1.ToString("yyyy/MM/dd HH:mm:ss") & "<br/>")
        'Weekday方法 會回傳 1是星期日 2是星期一 3星期是二 4是星期三 5是星期四 6是星期五 7是星期六
        Dim int_weekday As Integer = Weekday(objd1)
        int_weekday = int_weekday - 1 '減1後 0星期日 1星期一 2星期二
        If Not (int_weekday = 0 Or int_weekday = 6) Then
            Response.Write("不是,星期日或星期六")
        Else
            Response.Write("是,星期日或星期六")
        End If

2015年5月4日 星期一

ASP.NET WebForm 應用篇


2018/03/44
1.GridView在Eval中設定日期時間格式為yyyy/MM/dd HH:mm:ss。
<%# Eval("date_time", "{0:yyyy/MM/dd HH:mm:ss}")%>

2017/10/14
1.取得從哪一個網頁過來的。
Page.Request.UrlReferrer.AbsoluteUri
2.取得從哪一個網頁過來的,只取網頁名稱。
System.IO.Path.GetFileName(Page.Request.UrlReferrer.AbsolutePath)

2016/01/07
1.使用Regex正規表示Split字串切割。
Dim str_array1() As String = Regex.Split("1.題目1<br/>2.題目2<br/>3.題目3<br/>4.題目4", "\<br\/\>")
For x1 As Integer = 0 To str_array1.Length - 1
Response.Write(str_array1(x1) & "<br/>")
Next

C#寫法
string[] str = Regex.Split("AAA<p>BBB<p>DDD",@"\<p\>");
Response.Write(str[0] + ";" + str[2] + ";" + str[1]);

2015/10/29
1.Cookie儲存中文,輸出後亂碼。
Response.Cookies("test1").Value=HttpUtility.UrlEncode(TB_title.Text)'寫入
Label1.Text=HttpUtility.UrlDecode(Request.Cookies("test1").Value)'輸出

2.清除某個cookie。
If Not Request.Cookies("test1") Is Nothing Then
Response.Cookies("test1").Expires = DateTime.Now.AddDays(-1) '設定cookie到期日,過期
End If

2015/05/05
設定GridView裡的某個Label顏色,但已16進位設定。
GridView1_RowDataBound事件寫入:
If e.Row.RowType = DataControlRowType.DataRow Then
Dim L1 As Label = CType(e.Row.FindControl("L1"), Label)
Dim c1 As New ColorConverter
L1.ForeColor = CType(c1.ConvertFromString("#FF9900"), Color)
End If