Asp.net 选中复选框时更改Gridview中行的颜色

Asp.net 选中复选框时更改Gridview中行的颜色,asp.net,datagridview,row,background-color,Asp.net,Datagridview,Row,Background Color,我有一个datagridview,在asp.net应用程序中,每行都有一个复选框模板字段。我正在PageLoad事件中运行此代码。当一个人选中任何一行上的复选框时,该行的背景色或前景色应该高亮显示为黄色,但它不起作用。这是我的密码: foreach (GridViewRow row in gvSummary.Rows) { CheckBox cb = (CheckBox)row.FindControl("chkitemSelector"); if (cb != null &

我有一个datagridview,在asp.net应用程序中,每行都有一个复选框模板字段。我正在PageLoad事件中运行此代码。当一个人选中任何一行上的复选框时,该行的背景色或前景色应该高亮显示为黄色,但它不起作用。这是我的密码:

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

我怎样才能做到这一点呢?

如果您想在客户端实现这一点,就不需要页面加载事件。 相反,您应该使用Javascript或更好的建议

看看这些:


要在asp.net中处理此问题,应在用户选中其复选框后,通过单击按钮或…,将页面后面的代码发回服务器。 不能使用行数据绑定或页面加载。 您可以将代码放置在按钮的click事件或导致回发的任何其他控件中

哦,顺便说一句,你可以使用Asp.net,不过我不推荐你试试这个

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;
    }
}
row.BackColor = System.Drawing.Color.Yellow;
这对我有用!row.BackColor属性工作正常


在gridview的复选框中,尝试添加选中的\u已更改, 设置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行的颜色。复选框是否绑定到数据库?你是想在客户端还是在用户发回页面后这样做?我希望这种情况发生在客户端。当用户选中一个框时,该行高亮显示为黄色。我还使用了复选框,以便在选中某行时从该行获取数据键。这很好用。这就是你所说的:复选框是否绑定到数据库?我想我的问题是,我应该把上面的代码放在什么事件处理程序中?谢谢。我正在寻找一种ASP.NET方法来实现这一点。在这里我可以直接使用ASP.NET服务器控件。DataGridView、Row事件之类的东西。RowDataBound不会在复选框选中时触发。
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