OnRowDataBound和OnSelectedIndexChanged之间的冲突

时间:2015-10-02 12:30:56

标签: c# asp.net gridview backcolor

根据从网格中不可见的单元格中取出的#Colorcode,我有一个在OnRowDataBound事件上着色的Gridview。这完美无缺!

但是一旦你选择了一行,颜色就会丢失,选定的行不会再突出显示,就像我添加OnRowDataBound事件之前一样。为了让行再次着色,我在GridView上做了一个DataBind();要突出显示所选行,我手动设置Backcolor。这适用于彩色行,但不会突出显示所选行。

如何突出显示所选行? 马丁

protected void DisplayName_onselectedindexchanged(Object sender, EventArgs e)
{
    GridViewRow row1 = GridView02.SelectedRow;
    FormView02.Visible = true;
    GridView02.DataBind();
    row1.BackColor = System.Drawing.Color.FromName("#FFFF80");          
}


protected void PaintRows_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string getValue = (e.Row.FindControl("Colorcode") as Label).Text;
        e.Row.BackColor = System.Drawing.Color.FromName(getValue);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以跳过所有这些逻辑,只使用SelectedRowStyle属性。

<SelectedRowStyle BackColor="#FFFF80" />  

您的问题是您在SelectedIndexChanged事件中重新绑定了GridView。如果删除它,它应该可以正常工作。