Put a GridView row with red color if a cell has the false value

2

I would like a particular row of my GridView to be red if the corresponding cell in the closed column is false.

My ASP.Net looks like this:

div class="GridMain">
                    <asp:GridView ID="gvInformationPeriod" runat="server" Width="100%" CssClass="GridViewUser" AllowPaging="True" CellPadding="4" AutoGenerateColumns="False"
                        GridLines="None" ForeColor="#333333" OnPageIndexChanging="gvInformationPeriod_PageIndexChanging" onrowdatabound ="gvInformationPeriod_RowDataBound" PageSize="100">
                        <AlternatingRowStyle CssClass="GridAlternativeUser" BackColor="White" />
                        <Columns>
                            <asp:BoundField DataField="PeriodID" HeaderText="PeriodID" />
                            <asp:BoundField DataField="SchoolID" HeaderText="SchoolID" />
                            <asp:BoundField DataField="DateOpen" HeaderText="Aberto Em" />
                            <asp:BoundField DataField="UserName" HeaderText="Usuario" />
                            <asp:BoundField DataField="PCName" HeaderText="PC Name" />
                            <asp:BoundField DataField="Closed" HeaderText="Closed" />
                        </Columns>
                        <EditRowStyle BackColor="#2461BF" />
                        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#62AFC1" CssClass="GridPagerUser" ForeColor="White" HorizontalAlign="Center" />
                        <RowStyle BackColor="#EFF3FB" />
                        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                        <SortedAscendingCellStyle BackColor="#F5F7FB" />
                        <SortedAscendingHeaderStyle BackColor="#6D95E1" />
                        <SortedDescendingCellStyle BackColor="#E9EBEF" />
                        <SortedDescendingHeaderStyle BackColor="#4870BE" />
                    </asp:GridView>
                </div>

My ASPX.CS loads GridView like this:

 private void ListarGridInformationPeriod()
    {
        if (ddlSchool.SelectedValue != "")
        {
            gvInformationPeriod.Visible = true;
            gvInformationPeriod.DataSource = Period.ListOpenPeriod(int.Parse(ddlSchool.SelectedValue));
            gvInformationPeriod.DataBind();
        }
    }

protected void gvInformationPeriod_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        if (!string.IsNullOrEmpty(ddlSchool.SelectedValue))
        {
            gvInformationPeriod.PageIndex = e.NewPageIndex;
            gvInformationPeriod.DataSource = Period.ListOpenPeriod(int.Parse(ddlSchool.SelectedValue));
            gvInformationPeriod.DataBind();
        }
    }

I thought I would put something as below using RowDataBound but it did not work

protected void gvInformationPeriod_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {                
            if (e.Row.Equals("false"))
            {
                e.Row.BackColor = Color.Red;
            }
        }
    }

I tried to use the content of this post but I did not quite understand it.

  

link

    
asked by anonymous 09.06.2014 / 16:15

2 answers

4

Solution:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
       if (e.Row.RowType == DataControlRowType.DataRow)
       {
           if (e.Row.Cells[1].Text.Equals("false"))
           {
                e.Row.BackColor = Color.FromName("red");
           }
      }
}

Where 1 would be the second column of your GridView .

    
09.06.2014 / 16:38
2

You were almost right to mention which field you want to specify the value of. Ex: When the value of coluna is false, the line becomes red. both in protected void GridView1_RowDataBound

Mode 1:

Label lbl1= (Label)e.Row.FindControl("Closed");
if(lbl1.Text = "false")
{
e.Row.BackColor = System.Drawing.Color.Red;
}

Mode 2:

DataRow dr = ((DataRowView)e.Row.DataItem).Row;
  if (dr[1].ToString() == false) //o número é o ID da coluna [0,1,2, etc
{
//seu código
}
    
09.06.2014 / 16:35