我有一个包含3列的datagridview - Name [string],Width [Integer],Thickness [Integer]。数据源的宽度和厚度来自外部表id [Integer]。我想在datagridview中显示实际的文本值而不是ID值。我正在使用带有标准填充的数据集(全选)。我还有两个组合框下拉列表,它们将绑定到datagridview绑定的bindingsource的值。如何让厚度和宽度的DataGridView列显示来自WidthBindingSource和ThicknessBindingSource的Name字段的Text Value。
我试图在DataGridView的CellFormatting事件中处理这个问题,但是我无法更改列以在事件args e.Value等中使用格式化值类型的字符串。
下面的代码。
Private Sub dgvDimension_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgvDimension.CellFormatting
Dim dgv As DataGridView = DirectCast(sender, DataGridView)
Dim IsWidthColumn As Boolean = dgv.Columns(e.ColumnIndex).Name.ToLower() = "width"
Dim IsThicknessColumn As Boolean = dgv.Columns(e.ColumnIndex).Name.ToLower() = "thickness"
Dim columnName As String = dgv.Columns(e.ColumnIndex).Name
If IsWidthColumn OrElse IsThicknessColumn Then
If dgv.Columns(e.ColumnIndex).Name.ToLower() = columnName AndAlso e.RowIndex >= 0 AndAlso TypeOf dgv(columnName, e.RowIndex).Value Is Integer Then
Dim dt As DataTable = New DataTable
Select Case columnName.ToLower()
Case "width"
dt = DirectCast(WidthBindingSource1.DataSource, DataTable)
Exit Select
Case "thickness"
dt = DirectCast(ThicknessBindingSource.DataSource, DataTable)
Exit Select
Case Else
End Select
Dim expression As String = "Id=" & dgv(columnName, e.RowIndex).Value.ToString()
Dim dRow As DataRow = dt.Select(expression).FirstOrDefault
If Not dRow Is Nothing Then
e.Value = dRow("Name").ToString()
e.FormattingApplied = True
End If
End If
End If
End Sub
更多代码信息如下 - 表格,bindingsource,数据集和查询信息的结构。
Select ID, Name, Width, Thickness From Dimension [DimensionBindingSource DataSet.Dimension]
[Width and Thickness need to appear in DataGridView as Width.Name and Thickness.Name - I need to be able to update the Dimension table from this form using the DimensionBindingSource. ]
Select ID, Name From Width [WidthBindingSource DataSet.Width]
Select ID, Name From Thickness [ThicknessBindingSource DataSet.Thickness]
My cmbWidth and cmbThickness SelectedValues are bound to Dimension.Width, Dimension.Thickness