Member 12802669 Ответов: 2

Как изменить цвет выделенной строки, даже если она имеет условие?


У меня есть gridview, и если условие = true/accept, то строка будет зеленой. В противном случае-Белый. Если я выберу нормальную (белую, без условий) строку и нажму на нее, цвет изменится на синий.

Но если я нажму на красную строку, она все равно будет красной. Я хочу, чтобы, несмотря ни на что, он всегда менял цвет на синий, если я его выбираю.

Что я уже пробовал:

<pre lang="c#">protected void RowDataBound(object sender, GridViewRowEventArgs e)
    {
            e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(sender as Control, "Select$" + e.Row.RowIndex);
           
              if (Data.Rows[e.Row.RowIndex]["accept"].ToString() == "3")
            {
                e.Row.CssClass += " green";
                
            }

             if (e.Row.RowState == DataControlRowState.Selected)
            {
                e.Row.CssClass += " blue";
            }

    }


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (GridView1.SelectedIndex > -1)
        {
             foreach (GridViewRow row in ((GridView)sender).Rows)
            {
                if (row.RowIndex == GridView1.SelectedIndex)
                {
                    row.CssClass += " blue";
                }
                else
                {
                    row.CssClass = row.CssClass.Replace(" blue", string.Empty);
                }
            }
        }
    }

Afzaal Ahmad Zeeshan

Затем, прежде чем изменить цвет на синий, проверьте, имеет ли строка красный цвет. Если цвет красный, вернитесь.

Richard Deeming

Когда строка устанавливается в красный цвет? Вы упомянули белый и зеленый, с синим для выбранного ряда, но нет никакого упоминания о красном...

Скорее всего, это вопрос специфики. Попробуйте переместить .blue Правило CSS ниже других правил цвета в вашем файле CSS.

2 Ответов

Рейтинг:
1

Sunasara Imdadhusen

Вы можете использовать следующее:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (GridView1.SelectedIndex > -1)
        GridView1.SelectedRow.CssClass = "blue";
}


Рейтинг:
1

Sunasara Imdadhusen

Вы можете использовать следующее:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (GridView1.SelectedIndex > -1)
        GridView1.SelectedRow.CssClass = "blue";
}

ОПЕРАЦИОННАЯ
protected void OnSelectedIndexChanged(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.RowIndex == GridView1.SelectedIndex)
        {
            row.BackColor = ColorTranslator.FromHtml("#A1DCF2");
        }
        else
        {
            row.BackColor = ColorTranslator.FromHtml("#FFFFFF");
        }
    }
}