0

我有以下代码可以正常工作,但它获取我的列的设计名称(DataGridViewTextBoxColumn11)而不是标题文本。如何更改代码以获取列上的标题文本而不是设计名称?

For Each row As DataGridViewRow In grdTransaction.Rows
            If grdTransaction.Item("DataGridViewTextBoxColumn11", row.Index).Value IsNot Nothing Then
                If grdTransaction("DataGridViewTextBoxColumn11", row.Index).Value.Equals(DBNull.Value) Then
                    row.DefaultCellStyle.BackColor = Color.Red
                End If
            End If
        Next
4

3 回答 3

0

创建一个函数以从提供的列标题文本中返回 DGV 的列索引:

Private Function getColID(ByVal colHeaderText As String) As Integer
    Dim result As Integer = -1
    For Each col As DataGridViewColumn In grdTransaction.Columns
        If col.HeaderText = colHeaderText Then
            result = col.Index
            Exit For
        End If
    Next
    return result
End Function

然后在您的代码中:

For Each row As DataGridViewRow In grdTransaction.Rows
            If grdTransaction.Item(getColID("header text"), row.Index).Value IsNot Nothing Then
                If grdTransaction(getColID("header text"), row.Index).Value.Equals(DBNull.Value) Then
                    row.DefaultCellStyle.BackColor = Color.Red
                End If
            End If
        Next

或者这个小小的改变:

For Each row As DataGridViewRow In grdTransaction.Rows
            If row.cells(getColID("header text")).Value IsNot Nothing Then
                If row.cells(getColID("header text")).Value.Equals(DBNull.Value) Then
                    row.DefaultCellStyle.BackColor = Color.Red
                End If
            End If
        Next
于 2013-06-14T23:02:20.000 回答
0

我认为这很简单..

For Each row As DataGridViewRow In grdTransaction.Rows

    If Not IsDBNull(row.cells("column_name").Value) Then

        row.DefaultCellStyle.BackColor = Color.Red

    End If

 Next
于 2013-06-14T23:33:44.113 回答
0

我对这种事情的约定是将项目命名为以 dgc (DataGridColumn) 为前缀的数据库列名。因此标题是“客户名称”,列名称是“dgcCustomerName”。如果表单或用户控件上有多个数据网格,并且(例如)两个网格的列中都有 CustomerId,则将它们命名相同会产生冲突。dgcCustomerId 是容器命名空间中的一个对象,允许您从中获取属性设置,而无需先指定网格成员资格。在这种情况下,在第二个网格中,您可能必须调用列“dgcInvoiceCustomerId”或“dgcLineItemCustomerId”。

于 2013-06-14T20:08:58.620 回答