十一月 23

在GridView中如果想要在滑鼠移動時,滑鼠所指到的那一列會變色的話可以用JavaScript來達成

效果就像下面的圖所示,滑鼠所指到的那一列會變成亮黃色,移開後再還原成原本的顏色

20091123_1

20091123_2

以下為程式碼片段,於RowDataBound的事件中綁定JavaScript到Row中

    Private Sub GridView1_RowDataBound(ByVal sender As Object, _
              ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
              Handles GridView1.RowDataBound
        '滑鼠移入移出效果。
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;")
            e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor; this.style.backgroundColor='#ffff40';")
        End If
    End Sub




十一月 13

什麼是擴充方法(Extension Method)呢?

簡單的說就是可以讓你自已擴充用的東西(有說跟沒說一樣.....)

不用把擴充方法想的太難,它其實也是很平易近人的

在寫程式的時候,在字串的後面點(.)下去,會跑出一堆方法讓你使用,最常見的就是ToString()

那麼我們要如何自行設計一個屬於自己的方法呢(結果如下圖)?其實不難

20091113_1

下程的範例程式(專案打包點我下載),研究一下應該就可以懂了

首先撰寫要自訂擴充的方法 ModuleExt.vb

這邊需要注意的地方,在於傳入的參數型態

如果傳入的參數型態是Integer,那麼只有型態是Integer的點下去才會出這個自訂的Method

如果想要任何型態點下去,都會帶出現我們自定的Method,

那麼就把型態定為Object就可以了(如本例的AddString)

Imports System.Runtime.CompilerServices

Namespace ExtensionMethods
    Module OtherExtensions

        ''' <summary>
        ''' 英文字首轉大寫
        ''' </summary>
        <Extension()> _
        Public Function ToUpperFirstWord(ByVal src As String) As String
            If src.Length >= 1 Then
                Dim FirstWord As String = src.Substring(0, 1).ToUpper
                src = src.Remove(0, 1).Insert(0, FirstWord)
            End If
            Return src
        End Function

        <Extension()> _
        Public Function ToPerCent(ByVal src As Double) As String
            Return src * 100 & "%"
        End Function

        <Extension()> _
        Public Function AddString(ByVal src As Object) As String
            Return src & " New AddString"
        End Function

    End Module
End Namespace

接下來則是在要使用的程式頁面引用之前所寫的Extension

Imports ConsoleApplicationTEST.ExtensionMethods.OtherExtensions

Module Module1

    Sub Main()
        Dim test As String = "abcd"
        'Output: Abcd
        Console.WriteLine(test.ToUpperFirstWord)
        'Output: abcd New AddString
        Console.WriteLine(test.AddString)
        'Output: Abcd New AddString
        Console.WriteLine(test.ToUpperFirstWord.AddString)

        'Output: 50%
        Dim testint As Double = 0.5
        Console.WriteLine(testint.ToPerCent)

        Console.ReadLine()
    End Sub

End Module

相關文章:
何謂擴充方法 (Extension method )?
C# 3.0 初體驗:Extension Method
[C#] 3.0 中的新功能 - 擴充方法(Extension Method)