Trong hình trên tất cả datafields của mỗi record được hiển thị với cùng bề ngang và với datafield name của chúng dùng làm đề tựa của mỗi cột. Ta có thể dùng DataGridTableStyle object để hiển thị các cột data theo ý mình bằng cách gọi Sub AddCustomDataTableStyle()
(có code liệt kê dưới đây) trong Sub BtnLoadXMLData_Click.
Private Sub AddCustomDataTableStyle() ' Instantiate a DataGridTableStyle object Dim ts1 As New DataGridTableStyle()
ts1.MappingName = "alarm" ' Name of data table
ts1.AlternatingBackColor = Color.Beige ' Make alternating row beige
ts1.RowHeadersVisible = False ' Make RowHeaders (on the left of DataGrid) invisible ' Only two types are supported: Text and Boolean
' Add the display field in order of display from left to right 'Just ignore a datafield if you don't want to display it Dim boolCol1 As New DataGridBoolColumn() ' Boolean boolCol1.MappingName = "ackn" ' Name of datafield boolCol1.HeaderText = "Ackn"
ts1.GridColumnStyles.Add(boolCol1) '
Dim TextCol1 As New DataGridTextBoxColumn() ' Text TextCol1.MappingName = "priority"
TextCol1.HeaderText = "Prio" TextCol1.Width = 30
ts1.GridColumnStyles.Add(TextCol1) '
Dim TextCol2 As New DataGridTextBoxColumn() TextCol2.MappingName = "datetime"
TextCol2.HeaderText = "Time" TextCol2.Width = 110
ts1.GridColumnStyles.Add(TextCol2) '
Dim boolCol2 As New DataGridBoolColumn() boolCol2.MappingName = "alarm"
boolCol2.HeaderText = "ALM" boolCol2.Width = 30
ts1.GridColumnStyles.Add(boolCol2) '
Dim boolCol3 As New DataGridBoolColumn() boolCol3.MappingName = "isolate"
boolCol3.HeaderText = "ISO" boolCol3.Width = 30
ts1.GridColumnStyles.Add(boolCol3) '
Dim boolCol4 As New DataGridBoolColumn() boolCol4.MappingName = "fault"
boolCol4.HeaderText = "FLT" boolCol4.Width = 30
ts1.GridColumnStyles.Add(boolCol4) '
Dim TextCol3 As New DataGridTextBoxColumn() TextCol3.MappingName = "pointid"
TextCol3.HeaderText = "PointID" TextCol3.Width = 70
ts1.GridColumnStyles.Add(TextCol3) '
Dim TextCol4 As New DataGridTextBoxColumn() TextCol4.MappingName = "description"
TextCol4.HeaderText = "Description" TextCol4.Width = 210
ts1.GridColumnStyles.Add(TextCol4) '
Dim TextCol5 As New DataGridTextBoxColumn() TextCol5.MappingName = "statusvalue"
TextCol5.HeaderText = "Status/Value" TextCol5.Width = 150
ts1.GridColumnStyles.Add(TextCol5) '
Dim TextCol6 As New DataGridTextBoxColumn() TextCol6.MappingName = "diagram"
TextCol6.HeaderText = "Diag" TextCol6.Width = 40
ts1.GridColumnStyles.Add(TextCol6)
' Now add the DataGridTableStyle object to Collection TableStyles of Datagrid1 DataGrid1.TableStyles.Add(ts1)
End Sub
Trong code bên trên, ta thấy DataGridTableStyle tên ts1 chứa một collection of
GridColumnStyles. Muốn hiển thị datafield nào của record ta tạo cho nó một cột hoặc là Text
hoặc là Boolean. Nếu là Text thì ta instantiate một object loại DataGridTextBoxColumn, nếu là Boolean thì ta instantiate một object loại DataGridBoolColumn.
MappingName của DataGridTextBoxColumn hay DataGridBoolColumn là tên của Datafield. HeaderText là Tiêu đề nằm phía trên của cột datafield ấy. Width là bề ngang của cột mà bạn
phải thí nghiệm các con số vài lần cho nó hiển thị vừa vặn.
Cột nào ta cho vơ trước thì hiển thị bên trái, vơ sau thì nằm bên phải. Nếu ta cố ý không nhắc đến một datafield nào, thì nó khơng được hiển thị. Sau khi chuẩn bị DataGridTableStyle đầy đủ rồi, ta cho nó vào Collection TableStyles của DataGrid1.
Kế đó Edit property Text của DataGrid1 cho nó câu "Dùng DataGridTableStyle để hiển thị theo ý mình". Chạy chương trình lại và click nút Load XML Data bạn sẽ thấy như sau:
Hình 5.6 :DataGridTableStyle