Изменить цвет строки в Gridview, когда установлен флажок - PullRequest
0 голосов
/ 09 марта 2012

У меня есть datagridview с полем Шаблон флажков для каждой строки в приложении asp.net. Я запускаю этот код в событии PageLoad. Когда человек устанавливает флажок в любой строке, эти строки Backcolor или Forecolor должны быть выделены желтым цветом, но это не работает. Вот мой код:

foreach (GridViewRow row in gvSummary.Rows)
{
    CheckBox cb = (CheckBox)row.FindControl("chkitemSelector");
    if (cb != null && cb.Checked)
    {
        row.BackColor = Color.Yellow;
    }
}

Как я могу сделать эту работу?

Ответы [ 6 ]

0 голосов
/ 27 августа 2018

в чекбок gridview попробуйте добавить check_changed, установить значение свойства для checkbox1: AutoPostBack = "True"

Protected Sub checkbox1_CheckedChanged(sender As Object, e As EventArgs)
    Dim ID As CheckBox = CType(sender, CheckBox)
    Dim row As GridViewRow = TryCast((TryCast(sender, CheckBox)).Parent.Parent, GridViewRow)
    Dim hex As String

    If ID.Checked = True Then
        hex = "#fff8d8"
        Me.GridView1.Rows(row.RowIndex).BackColor = System.Drawing.ColorTranslator.FromHtml(Hex)

    Else
        hex = "#ffffff"
        Me.GridView1.Rows(row.RowIndex).BackColor = System.Drawing.ColorTranslator.FromHtml(Hex)

    End If

End Sub

с этим я могу изменить цвет строки gridview, когда флажок установлен или не установлен

0 голосов
/ 10 ноября 2017

Это сработало для меня!Свойство row.BackColor просто отлично работает!

 CheckBox chk = (sender as CheckBox);
    if (chk.ID == "chkAll")
    {
        foreach (GridViewRow row in gdvGroupInfo.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                row.Cells[0].Controls.OfType<CheckBox>().FirstOrDefault().Checked = chk.Checked;
                string hex = "#337ab7";
                row.BackColor = System.Drawing.ColorTranslator.FromHtml(hex);
                row.Font.Bold = true;
                row.ForeColor = Color.White;
            }
            else
            {
                row.BackColor = System.Drawing.Color.White;
                row.ForeColor = Color.Black;

            }
        }
    }
0 голосов
/ 01 июля 2014

Попробуйте это

row.BackColor = System.Drawing.Color.Yellow;
0 голосов
/ 24 июня 2013
protected void GvdAccessorie_RowDataBound(object sender, GridViewRowEventArgs e)
{
    CheckBox chkActive = e.Row.FindControl("chkselect") as CheckBox;
    if (null != chkActive)
    {
        bool IsVisible = chkActive.Checked;
        e.Row.BackColor = Color.Blue;
        if (!IsVisible)
            e.Row.BackColor = Color.White;
    }
}
0 голосов
/ 09 марта 2012

для обработки в коде asp.net за вашей страницей должен быть отправлен обратно на сервер после того, как пользователь установит свои флажки, нажав кнопку или ....Вы не можете использовать row_databinding или page_load.Вы можете поместить свой код в событие нажатия кнопки (или любой другой элемент управления, который вызывает обратную передачу)

о, кстати, вы можете использовать Asp.net AJAX updatePanel (хотя я нерекомендую)

0 голосов
/ 09 марта 2012

если вы хотите сделать это на стороне клиента, нет необходимости в событии Page_Load.вместо этого вы должны использовать Javascript или более подходящее предложение JQuery

посмотрите на эти:

...