และด้วยความสามารถใหม่ของ 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:
Post a Comment