选中“复选框”时,更改Gridview中行的颜色

时间:2012-03-09 15:16:08

标签: asp.net datagridview row background-color

我有一个datagridview,其中一个模板字段为Checkboxes,用于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 :(得分:0)

如果您想在客户端执行此操作,则无需Page_Load事件。  相反,你应该使用Javascript或更好的建议JQuery

看看这些:

答案 1 :(得分:0)

在页面后面的asp.net代码中处理它应该在用户选择他/她的复选框后,通过单击按钮或...来回发到服务器。 你不能使用row_databinding或page_load。 您可以将代码放在Button的点击事件(或导致回发的任何其他控件)中

哦,顺便说一句,你可以使用Asp.net AJAX updatePanel(虽然我不推荐它)

答案 2 :(得分:0)

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;
    }
}

答案 3 :(得分:0)

试试这个

row.BackColor = System.Drawing.Color.Yellow;

答案 4 :(得分:0)

  

这对我有用! 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;

            }
        }
    }

答案 5 :(得分:0)

在gridview的复选框中尝试添加checked_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行的颜色