Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 检测gridview中的重复行_Asp.net_Vb.net_Gridview - Fatal编程技术网

Asp.net 检测gridview中的重复行

Asp.net 检测gridview中的重复行,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,在我的gridview中,我有一些重复的行,我想用红色显示这些行,如果这些行的前4列相似,那么这些行是重复的。 例如,在本图中,第二行和第三行应变为红色: 这是我的密码: Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load For i = 0 To GridView2.Rows.Count - 1 If (GridView2.Rows(i).Cells(0).T

在我的gridview中,我有一些重复的行,我想用红色显示这些行,如果这些行的前4列相似,那么这些行是重复的。 例如,在本图中,第二行和第三行应变为红色:

这是我的密码:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    For i = 0 To GridView2.Rows.Count - 1
        If (GridView2.Rows(i).Cells(0).Text = GridView2.Rows(i + 1).Cells(0).Text And GridView2.Rows(i).Cells(1).Text = GridView2.Rows(i + 1).Cells(1).Text And GridView2.Rows(i).Cells(3).Text = GridView2.Rows(i + 1).Cells(3).Text And GridView2.Rows(i).Cells(4).Text = GridView2.Rows(i + 1).Cells(4).Text) Then
            GridView2.Rows(i).ForeColor = System.Drawing.Color.Red
        End If
    Next
End Sub
然而,这段代码对我来说不起作用,请给出任何其他实现这一点的建议


谢谢你的时间

如果使用datatable填充datagridview,则可以使用defaultview 或者,您可以遍历所有datagridview项

For i = 0 To GridView2.Rows.Count - 1
    For j As integer = 0 To GridView2.Rows.Count - 1
        If Not i = j Then
            If (GridView2.Rows(i).Cells(0).Text = GridView2.Rows(j).Cells(0).Text And GridView2.Rows(i).Cells(1).Text = GridView2.Rows(j).Cells(1).Text And GridView2.Rows(i).Cells(3).Text = GridView2.Rows(j).Cells(3).Text And GridView2.Rows(i).Cells(4).Text = GridView2.Rows(j).Cells(4).Text) Then
            GridView2.Rows(i).ForeColor = System.Drawing.Color.Red
            End If
        End If
    Next
Next

您应该在
RowDataBound
事件中编写数据格式代码,如下所示

Protected Sub GridView2_RowDataBound(ByVal sender As GridView, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView2.RowDataBound

    If e.Row.RowType = DataControlRowType.DataRow Then

        Dim idxPrev As Integer = e.Row.RowIndex - 1
        If 1 <= e.Row.RowIndex Then
            If e.Row.Cells(0).Text = sender.Rows(idxPrev).Cells(0).Text AndAlso
                e.Row.Cells(1).Text = sender.Rows(idxPrev).Cells(1).Text AndAlso
                e.Row.Cells(3).Text = sender.Rows(idxPrev).Cells(3).Text AndAlso
                e.Row.Cells(4).Text = sender.Rows(idxPrev).Cells(4).Text Then
                e.Row.ForeColor = Drawing.Color.Red
                sender.Rows(idxPrev).ForeColor = Drawing.Color.Red
            End If
        End If

    End If

End Sub
Protected Sub-GridView2_RowDataBound(ByVal sender作为GridView,ByVal e作为System.Web.UI.WebControls.GridViewRowEventArgs)处理GridView2.RowDataBound
如果e.Row.RowType=DataControlRowType.DataRow,则
Dim idxPrev As Integer=e.Row.RowIndex-1

如果1,为什么不在绑定到GridView2之前过滤数据源(可能是datatable/dataset)?顺便问一下,您在哪里定义此代码?给出完整的代码。使用
而不是
。此外,最后一行没有下一行,如果您试图访问它,则会导致异常。