我想合并并在DataGridView
的1列中显示2个数据字段。这在vb.net中怎么可能?
DataGridView
有一个数据源。
答案 0 :(得分:2)
您可以使用以下任一选项:
为DataTable创建计算列
如果数据字段属于DataTable
,您可以将计算DataColumn
添加到DataTable
并设置其Expression
属性,以根据这两列返回所需的值。
table.Columns.Add("DisplayName", GetType(String), "FirstName + ' ' + LastName")
为类创建只读属性
如果数据字段属于普通模型类,则可以在getter中添加只读属性,根据这2个属性返回所需的值。
Public Class Person
Public Property FirstName As String
Public Property LastName As String
Public ReadOnly Property DisplayName As String
Get
Return String.Format("{0} {1}", FirstName, LastName)
End Get
End Property
End Class
使用DataGridView的CellFormatting事件
作为所有案例的一般解决方案,您可以使用DataGridView
的{{3}}事件,并根据这两个字段将e.Value
设置为所需的值。
Private Sub DataGridView1_CellFormatting(sender As Object, _
e As DataGridViewCellFormattingEventArgs Handles DataGridView1.CellFormatting
' For example you want to do it for 3rd column
If e.ColumnIndex = 2 AndAlso e.RowIndex >= 0 Then
Dim row = Me.DataGridView1.Rows(e.RowIndex)
'If DataSource is a DataTable, DataBoundItem is DataRowView
Dim data = DirectCast(row.DataBoundItem, Person)
e.Value = String.Format("{0} {1}", data.FirstName, data.LastName)
End If
End Sub