Раскрасьте все оставшиеся строки после выполнения определенного условия в ASP.NET - PullRequest
0 голосов
/ 05 мая 2020

Как раскрасить все оставшиеся строки после выполнения определенного условия в ячейке в GridView

Сетка со столбцом шаблона

<asp:TemplateField HeaderText="Status" HeaderStyle-CssClass="grdHeader" ItemStyle-Width="22%">
                                         <ItemTemplate>
                                             <asp:Label ID="lblStatus" runat="server" ><%#DataBinder.Eval(Container.DataItem, "Status_Id")%></asp:Label>
                                         </ItemTemplate> 
                                    </asp:TemplateField>

Например, если сетка имеет 10 строк, если Status_Id = 1 в 4-й строке, мне нужно покрасить все оставшиеся 6 строк.

Использование события RowDataBound как этого добиться

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {

    if(e.Row.RowType == DataControlRowType.DataRow)
    {

    }

  }

Ответы [ 2 ]

0 голосов
/ 12 мая 2020
List<foo> lst = GetList();

StringBuilder sb = new StringBuilder();

sb.Append(@"
<div class='grdHeader'>
<table>
<tr>
<th>Status ID</th>
<th>Name</th>
<th>Amount</th>
</tr>
");

bool colorTheRest = false;

foreach (var foo in lst)
{
    if (colorTheRest)
    {
        sb.Append("<tr class='trColor'>");
    }
    else
    {
        sb.Append("<tr class='trNoColor'>");
    }

    if (foo.status == 1)
    {
        colorTheRest = true;
    }

    sb.Append($@"
<td>{foo.status}</td>
<td>{foo.name}</td>
<td>{foo.amount}</td>
</tr>
");
}

sb.Append("</table></div>");

Добавьте заполнитель на странице ASP. NET:

<asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>

Продолжайте с кода позади:

ph1.Controls.Add(new LiteralControl(sb.ToString()));

Затем вы можете раскрасить его в блоке стилей CSS:

<style type="text/css">
    .grdHeader th {
        /*your-style here*/
    }
    .trColor {
        background: gray;
    }
    .trNoColor {
        background: white;
    }
</style>
0 голосов
/ 06 мая 2020

Проверить идентификатор статуса для текущей строки в RowDataBound. Если он соответствует тому, что вы ищете, установите значение в скрытом поле или глобальной переменной или что-то в этом роде. Также в RowDataBound проверьте, было ли это значение уже установлено. Если да, то вы знаете, что прошли строку, в которой нашли идентификатор состояния, поэтому теперь измените цвет строки для этой строки.

...