简体   繁体   中英

I need help selected index does not work in my code

I try to color row if he have a certain value so when a index of my row is different of zero, I get an error

<asp:GridView ID="Gridview1" class="mx-auto" runat="server" AutoGenerateColumns="False" OnRowDataBound="Gridview1_RowDataBound"
     KeyNames="Id_Task"  AllowPaging="True" PageSize="6" DataSourceID="SqlDataSource1" CellPadding="6" ForeColor="#333333" GridLines="Vertical">
    <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:BoundField DataField="Id_Task" HeaderText="Id_Task" SortExpression="Id_Task" Visible="false" />
            <asp:BoundField DataField="Taches a faire" HeaderText="Taches a faire" SortExpression="Taches a faire" />
            <asp:BoundField DataField="Username" HeaderText="Username" SortExpression="Username" />
            <asp:BoundField DataField="date de requete" HeaderText="date de requete" SortExpression="date de requete" />
            <asp:BoundField DataField="deadline" HeaderText="deadline" SortExpression="deadline" />
            <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
            <asp:HyperLinkField Text="Details" DataNavigateUrlFields="Id_Task,Taches a faire,Username,date de requete" DataNavigateUrlFormatString="~/Admin/NewPage.aspx?Id_Task={0}&Taches a faire={1}&Username={2}&date de requete={3}" />


        </Columns>
        <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
        <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
        <SortedAscendingCellStyle BackColor="#FDF5AC" />
        <SortedAscendingHeaderStyle BackColor="#4D0000" />
        <SortedDescendingCellStyle BackColor="#FCF6C0" />
        <SortedDescendingHeaderStyle BackColor="#820000" />
    </asp:GridView>

C# code:

protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.Cells[0].Text.Equals("Finished"))
    {
        e.Row.BackColor = System.Drawing.Color.DarkGreen;
        e.Row.ForeColor = System.Drawing.Color.White;
    }
    else if (e.Row.Cells[0].Text.Equals("In progress"))
    {
        e.Row.BackColor = System.Drawing.Color.DarkOrange;
        e.Row.ForeColor = System.Drawing.Color.White;
    }
}

This is the correct syntax:

if (e.Row.RowType == DataControlRowType.DataRow)
{
  if (e.Row.Cells[5].Text.Equals("Finished"))
  {
    e.Row.BackColor = System.Drawing.Color.DarkGreen;
    e.Row.ForeColor = System.Drawing.Color.White;
    e.Row.Visible = false;
  }
  else if (e.Row.Cells[5].Text.Equals("In progress"))
  {
    e.Row.BackColor = System.Drawing.Color.DarkOrange;
    e.Row.ForeColor = System.Drawing.Color.White;
  } 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM