Tuesday, September 11, 2007

การสร้าง Class เพื่อใช้กับ VS2005

ใน VS2005 เราสามารถสร้าง Class Diagram เพื่อสร้าง Class และ diagram ได้พร้อมๆ กัน มีประโยชน์โดยสามารถลดเวลาระหว่างการ design และ code ได้อย่างมาก เพราะสามารถ design ไปพร้อมๆ กับการ code ได้

และด้วยความสามารถใหม่ของ VS2005 ทำให้เราสามารถ binding Object เข้ากับ DataControl ของ .NET ได้ โดยผ่าน ObjectDataSoure control ใหม่เพียงแค่คลิกไม่กี่คลิก

เช่น หากผมมี class ชื่อ customer ดังนี้


Public Class Customer

    Sub New()
        MyBase.New()
        CustomerID = ""
        CustomerName = ""
        CustomerSurname = ""
        Status = CustomerStatusEnum.Pending
    End Sub

    Private _customerID as string
    Public Property CustomerID as string
       Get
            return _customerID
       End Get
       Set(value as string)
           _customerID = value
       End set
    End Property

    Private _customerName as string
    Public Property CustomerName as string
        Get
            return _customerName
        End Get
        Set (value as string)
            _customerName = value
        end Set
    end property

    Private _customerSurName as string
    Public Property CustomerSurName as string
        Get
            return _customerSurName
        End Get
        Set (value as string)
            _customerSurName = value
        end Set
    end property
   
    Private _status as CustomerStatusEnum
    Public Property Status as CustomerStatusEnum
        Get
             return _status
        End Get
        Set (value as CustomerStatusEnum)
             _status = value
        End Set
    End Property
end class


เราสามารถนำ class นี้ไป bind กับ DataGridView ได้ แต่ต้องทำให้เป็น collection class ก่อนโดยสร้าง

แบบที่ 1


Public Class Customers
    Private _customers as List(Of Customer)
    Public Property Customers as List(Of Customer)
        Get
            return _customers
        End Get
        Set (value as List(Of Customer)
            _customers= value
        end Set
    End Property
End Class


หรือจะสร้าง class collection ที่สืบทอดมาจาก List Class เลยก็ได้ครับ

แบบที่ 2


Public Class Customers
    Inherits List(Of Customer)
       ' ไม่ต้องเขียน code อีก
End Class


แบบที่ 2 จะดีหน่อยตรงที่เวลาเขียนโปรแกรมไม่ต้องอ้างถึง property อีก เช่น
    การเรียกใช้แบบที่ 1

        Dim custs as New Customers
        custs.Customers.Add(New Customer)

    การเรียกใช้แบบที่ 2

        Dim custs as New Customers
        custs.Add(New Customer)


ถ้าเรา view ดูใน diagram จะแสดงรูปคล้ายๆ กับรูปนี้ครับ


จากนั้นผมสร้าง Form ขึ้นมาเพื่อเรียกใช้งาน Class และ bind เข้า DataGridView ครับ โดยวาง DataGridView ไว้บน form จากนั้นเขียนโค้ดดังนี้


    Private custs As New Customers

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
        Dim cust As New Customer

        cust.CustomerID = "1"
        cust.CustomerName = "NooM"
        cust.CustomerSurname = "DeV"
        cust.Status =
CustomerStatusEnum.Active

        Dim cust1 As New Customer
        cust1.CustomerID = "2"
        cust1.CustomerName = "YourName"
        cust1.CustomerSurname =
"YourSurname"

        custs.Add(cust)
        custs.Add(cust1)

        DataGridView1.DataSource = custs
    End Sub


ทดลอง run จะได้ผลลัพท์ดังรูปครับ
ถ้าสังเกตดีๆแล้ว จะเห็นว่า Property ที่เป็น Enum นั้น DataGridView สามารถแสดงชื่อจาก Enum ได้อีกด้วย จากรูปด้านบนคือ column ชื่อ Status ครับ มันแสดงสถานะ Active และ Pending ให้เลยด้วย เจ๋งไหมล่ะครับ

ไม่ยากเลยใช่ไหมครับ

--NooM--


No comments: