RowDataBound行突出显示

时间:2017-08-24 16:48:50

标签: vb.net

我正在尝试根据数据集第11列上的数字突出显示行(附加图像)。我希望所有在第11列中具有值的行< 5000将突出显示为红色。以下是我的代码:

  Protected Sub loadData()    
        gvRsrvtionValdtn.DataSource = ds
                Dim myTable As System.Data.DataRowCollection
                myTable = ds.Tables(0).Rows
                If myTable.Count > 0 Then
                    For i = 0 To myTable.Count - 1
                        If myTable(i)(10) > 5000 Then
                            alist.Add(i)
                        End If    
                Next
            End If

            gvRsrvtionValdtn.DataBind()
            btnExp.Visible = True
        End Sub
    Protected Sub gvRsrvtionValdtn_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvRsrvtionValdtn.RowDataBound
            Dim myRow As TableRow = e.Row()
            If alist.Contains(e.Row.RowIndex) Then
               myRow.BackColor = Color.Red
            End If
        End Sub



 <asp:GridView ID="gvRsrvtionValdtn" runat="server" AutoGenerateColumns="False" 
                BackColor="Black" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" 
                CellPadding="4" CssClass="aspdatagrid" ForeColor="Black" CellSpacing="1"
                HeaderStyle-CssClass="fixHdr" Width="98%" EmptyDataText="No records found" 
                EmptyDataRowStyle-CssClass="emptyData" RowStyle-Wrap="false"
                **OnRowDataBound ="gvRsrvtionValdtn_RowDataBound"**> 

在调试时,我可以看到第11列值alist,但在显示时未突出显示。请指教。

[my data set][1]


  [1]: https://i.stack.imgur.com/gm7n8.jpg

2 个答案:

答案 0 :(得分:0)

这是您尝试实现的最小工作示例。 在下面的代码段中,第2列小于100的行会获得不同的颜色。

WebForm1.aspx的

upload_max_filesize

WebForm1.aspx.vb

upload_max_filesize = 64M

以下是您评论后的更新方法。你的问题和问题有点不清楚。你的开场问题说......

  
    

如果列中的数据小于5000,则突出显示行...

  

这就是代码片段的作用,虽然我的代码是100而不是5000 ......

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="HighlightRowsInDGV_Web.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>below this<br />
        <asp:GridView ID="gvRsrvtionValdtn" runat="server" AutoGenerateColumns="true" 
                BackColor="green" BorderColor="#DEDFDE" BorderStyle="Double" BorderWidth="1px" 
                CellPadding="4" CssClass="aspdatagrid" ForeColor="Black" CellSpacing="1"
                HeaderStyle-CssClass="fixHdr" Width="98%" EmptyDataText="No records found" 
                EmptyDataRowStyle-CssClass="emptyData" RowStyle-Wrap="false"
                OnRowDataBound ="gvRsrvtionValdtn_RowDataBound"></asp:GridView>

    </div>
    </form>
</body>
</html>

答案 1 :(得分:0)

我忘了访问行级别。添加此行后:对于每个单元格作为TableCell在受保护的子gvRsrvtionValdtn_RowDataBound的IF语句中的myRow.Cells中,它可以工作:

Protected Sub gvRsrvtionValdtn_RowDataBound(sender As Object, e As 
GridViewRowEventArgs)
    Dim myRow As TableRow = e.Row()
    If e.Row.RowIndex > -1 Then
        If alist.Contains(e.Row.RowIndex) Then
            For Each cell As TableCell In myRow.Cells
                cell.BackColor = Color.Red
            Next
        End If
    End If
End Sub